/**
* Problema 1
*/
# include <stdio.h>
# include <stdlib.h>
int main()
{
int a[100], i, nr = 0, n;
printf("n= ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("a[%d]= ", i);
scanf("%d", &a[i]);
}
for (i = 0; i < n; i++)
if(a[i] < 5)
nr++;
printf("%.2f%%\n", (float)nr * 100 / n);
return 0;
}
/**
* Problema 2
*/
# include <stdio.h>
int main()
{
int v[100], n, i, np, nn, sp, sn;
printf("n = ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("v[%d] = ", i);
scanf("%d", &v[i]);
}
nn = np = 0; // numarul de numere negative / pozitive
sn = sp = 0; // suma numereol negative / pozitive
for (i = 0; i < n; i++)
if (v[i] < 0) {
nn++;
sn += v[i];
}
else if (v[i] > 0) {
np++;
sp += v[i];
}
if (nn == 0)
printf("Nu exista numere negative in sir\n");
else
printf("Media numerelor negative este %.2f\n", (float)sn / nn);
if (np == 0)
printf("Nu exista numere pozitive in sir\n");
else
printf("Media numerelor pozitive este %.2f\n", (float)sp / np);
return 0;
}
/**
* Problema 3
*/
# include <stdio.h>
int main()
{
int v[100], n, i, ct, desc, cresc;
printf("n = ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("v[%d] = ", i);
scanf("%d", &v[i]);
}
ct = 1; // presupunem initial ca sirul este constant
desc = 1; // si ordonat descrescator
cresc = 1; // si descrescator
// La sfarsit cel mult una din variabile va fi 1
for (i = 0; i < n - 1; i++) {
if (v[i] >= v[i + 1]) // nu e crescator
cresc = 0;
if (v[i] <= v[i + 1]) // nu e descrescator
desc = 0;
if (v[i] != v[i + 1]) // nu e constant
ct = 0;
}
if (ct)
printf("Sir constant\n");
else if (desc)
printf("Sir descrescator\n");
else if (cresc)
printf("Sir crescator\n");
else
printf("Sir oarecare\n");
return 0;
}
/**
* Problema 4
*/
# include <stdio.h>
# include <limits.h>
int main()
{
int a[100][100], n, m, i, j, max, min;
printf("m = ");
scanf("%d", &m);
printf("n = ");
scanf("%d", &n);
for (i = 0; i < m; i++)
for (j = 0; j < n; j++) {
printf("a[%d][%d] = ", i, j);
scanf("%d", &a[i][j]);
}
min = INT_MAX;
for (i = 0; i < m; i++) {
max = a[i][0]; // initializam maximul cu prima valoare
// de pe linie
for (j = 1; j < n; j++)
if (a[i][j] > max)
max = a[i][j];
if (min > max)
min = max;
}
printf("Punct in sa = %d\n", min);
return 0;
}
/**
* Problema 5
*/
# include <stdio.h>
int main()
{
int n, m, p, q, A[100][100], B[100][100], i, j, k;
int C[100][100] = {0}; // toate valorile initializate la 0
printf("m = ");
scanf("%d", &m);
printf("n = ");
scanf("%d", &n);
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
scanf("%d", &A[i][j]);
printf("p = ");
scanf("%d", &p);
printf("q = ");
scanf("%d", &q);
for (i = 0; i < p; i++)
for (j = 0; j < q; j++)
scanf("%d", &B[i][j]);
if (n != p) {
printf("Nu se poate efectua A * B"); // afisam mesaj
return 0; // iesim din program
}
for (i = 0; i < m; i++)
for (j = 0; j < q; j++)
for (k = 0; k < n; k++)
C[i][j] += A[i][k] * B[k][j];
for (i = 0; i < m; i++) {
for (j = 0; j < q; j++)
printf("%d ", C[i][j]);
printf("\n");
}
return 0;
}
/**
* Problema 6
*/
# include <stdio.h>
int main()
{
int n, m, i, j, A[100], C[100] = {0};
float X[100];
printf("n = ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("X[%d] = ", i);
scanf("%f", &X[i]); // citim cele n numere reale
}
printf("m = ");
scanf("%d", &m);
for (i = 0; i < m + 1; i++) { // m + 1 numere intregi
printf("A[%d] = ", i);
scanf("%d", &A[i]);
}
for (i = 0; i < m; i++)
if (A[i] >= A[i + 1]) {
printf("Intervalele nu sunt crescatoare!\n");
return 0;
}
// C[i] = numarul de numere in intervalul [A[i], A[i + 1]]
for (i = 0; i < n; i++) // pentru fiecare numar determinam intervalul
for (j = 0; j < m; j++) // din care face parte
if (A[j] <= X[i] && X[i] < A[j + 1]) {
C[j]++; // am mai gasit un numar din interval
break; // nu mai are sens sa incercam restul de intervale
}
// Hint: o varianta mult mai eficienta ar sorta mai intai vectorul X
// si ar distribui mai apoi numerele in intervale
for (i = 0; i < m; i++)
printf("%d numere in intervalul [%d, %d]\n", C[i], A[i], A[i + 1]);
return 0;
}
/**
* Problema 7
*/
# include <stdio.h>
# include <math.h>
int main()
{
int n, i;
float C[100], x, p1, p2;
printf("n = ");
scanf("%d", &n);
for (i = 0; i <= n; i++) { // C[0] ... C[n] => n + 1 coeficienti
printf("C[%d] = ", i);
scanf("%f", &C[i]);
}
printf("x = ");
scanf("%f", &x);
// Suma de termeni calculati cu functia pow
p1 = 0;
for (i = 0; i <= n; i++)
p1 += C[i] * pow(x, n - i);
// Prin relatia de recurenta P[k] = P[k - 1] * x + C[k]
p2 = 0;
for (i = 0; i <= n; i++)
p2 = p2 * x + C[i];
printf("p1 = %.2f\n", p1);
printf("p2 = %.2f\n", p2);
return 0;
}
/**
* Problema 8
*/
# include <stdio.h>
int main()
{
int n, m, i, j, k, A[100], B[100], C[100];
printf("n = ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("A[%d] = ", i);
scanf("%d", &A[i]);
}
printf("m = ");
scanf("%d", &m);
for (i = 0; i < m; i++) {
printf("B[%d] = ", i);
scanf("%d", &B[i]);
}
k = 0; // incepem sa construim noul vector
i = 0;
j = 0;
while (i < n && j < m)
if (A[i] < B[j]) { // daca elementul curent din A este mai mic
C[k] = A[i];
i++; // avansam in A
k++;
}
else {
C[k] = B[j];
j++; // avansam in B
k++;
}
// la sfarsit adaugam elementele ramase in A sau in B
// tot timpul se va intra in cel mult unul din blocurile while
while (i < n) {
C[k] = A[i];
i++;
k++;
}
while (j < m) {
C[k] = B[j];
j++;
k++;
}
for (i = 0; i < n + m; i++)
printf("%d ", C[i]);
printf("\n");
return 0;
}
/**
* Problema 9
*/
# include <stdio.h>
int main()
{
int n, A[100][100], B[100][100], i, j;
printf("n = ");
scanf("%d", &n);
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf("%d", &A[i][j]);
for (j = 1; j < n; j++){
for (i = n - j; i < n; i++)
printf("%d ", A[i][j]);
printf("\n");
}
printf("\n");
return 0;
}
/**
* Problema 10
*/
# include <stdio.h>
int main()
{
int V[100], n, i, max, maxstart, start;
printf("n = ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("V[%d] = ", i);
scanf("%d", &V[i]);
}
max = 0; maxstart = -1;
start = 0; // pozitia de start
for (i = 1; i < n; i++)
if (V[i - 1] > V[i]) { // daca secventa nu mai e crescatoare
if (i - start > max) { // verificam daca avem un nou maxim
max = i - start;
maxstart = start;
}
start = i;
}
for (i = maxstart; i < maxstart + max; i++)
printf("%d ", V[i]);
printf("\n");
return 0;
}