Sunteți pe pagina 1din 15

1.

Sa se realizeze programul care calculeaza suma elementelor unei matrice dreptunghiulare de


dimensiune m x n- A(mxn). Elementele matricei se vor citi de a tastatura.

#include <stdio.h>
#include <conio.h>

int main() {
int n, m, i, j, sum, a[100][100];
printf("Nr. de linii si de coloane:\n");
scanf_s("%i %i", &m, &n);
printf("Introduceti valorile celor %i elemente ale matricei:\n", m*n);
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf_s("%i", &a[i][j]);
}
}
printf("Matricea este:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%i ", a[i][j]);
}
printf("\n");
}
sum = 0;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
sum = sum + a[i][j];
}
}
printf("Suma elementelor matricei este %i\n", sum);
_getch();
}
2. 2.Sa se realizeze programul care determina elementele maxim si minim dintr-o matrice
dreptunghiulara A(mxn)

#include <stdio.h>
#include <conio.h>

int main() {
int n, m, i, min, max, j, a[100][100];
printf("Nr. de linii si de coloane:\n");
scanf_s("%i %i", &m, &n);
printf("Introduceti valorile celor %i elemente ale matricei:\n", m*n);
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf_s("%i", &a[i][j]);
}
}
printf("Matricea este:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%i ", a[i][j]);
}
printf("\n");
}
max = a[0][0];
min = a[0][0];
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
if (max < a[i][j]) {
max = a[i][j];
}
if (min > a[i][j]) {
min = a[i][j];
}
}
}
printf("Valoarea maxima este %i, iar valoarea minima este %i.\n", max, min);
_getch();
}
3. Sa se scrie programul care realizeaza determinarea pozitiei primei aparitii a unei valori date
intr-o matrice dreptunghiulara A(mxn)

#include <stdio.h>
#include <conio.h>

int main() {
int n, m, i, val, pozl, pozc, gas, j, a[100][100];
printf("Nr. de linii si de coloane:\n");
scanf_s("%i %i", &m, &n, 1, 1);
printf("Introduceti valorile celor %i elemente ale matricei:\n", m*n);
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf_s("%i", &a[i][j]);
}
}
printf("Matricea este:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%i ", a[i][j]);
}
printf("\n");
}
printf("Valoarea cautata?\n");
scanf_s("%i", &val);
gas = 0;
i = 0;
while (i < m && !gas) {
j = 0;
while (j < n && !gas) {
if (a[i][j] == val) {
pozl = i;
pozc = j;
gas = 1;
}
j++;
}
i++;
}
printf("Valoarea cautata se afla pe linia %i si coloana %i\n", pozl+1, pozc+1);
_getch();
}
4. Sa se scrie programul care sorteaza elementele unei matrice A(mxn) in ordine crescatoare
#include <stdio.h>
#include <conio.h>

int main() {
int n, m, i, j, a[10][10], c[10][10], v[100];
printf("Nr. de linii si de coloane:\n");
scanf_s("%i %i", &m, &n);
printf("Introduceti valorile celor %i elemente ale matricei:\n", m*n);
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf_s("%i", &a[i][j]);
}
}
printf("Matricea este:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%i ", a[i][j]);
}
printf("\n");
}
int k = 0;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
v[k] = a[i][j];
k++;
}
}
int aux = 0;
for (i = 0; i < m*n - 1; i++) {
for (j = i + 1; j < m*n; j++) {
if (v[i] > v[j]) {
aux = v[i];
v[i] = v[j];
v[j] = aux;
}
}
}
k = 0;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
c[i][j] = v[k];
k++;
}
}
printf("Matricea sortata este:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%i ", c[i][j]);
}
printf("\n");
} _getch(); }
1. Scrieti programul C care numara cate elemente negative sunt intr-un vector.
#include <stdio.h>
#include <conio.h>

int main() {
int v[100], i, neg, n;
printf("Introduceti lungimea vectorului\n");
scanf_s("%i", &n);
printf("Introduceti cele %i elemente ale vectorului.\n", n);
for (i = 0; i < n; i++) {
scanf_s("%i", &v[i]);
}
printf("Vectorul este: ");
for (i = 0; i < n; i++) {
printf("%i ", v[i]);
}
neg = 0;
for (i = 0; i < n; i++) {
if (v[i] < 0) {
neg++;
}
}
printf("\nExista %i elemente negative in vectorul dat.\n", neg);
_getch();
}
2. Scrieti programul C care sa calculeze produsul vectorial a doi vectori.
#include <stdio.h>
#include <conio.h>

int main() {
int i, n, vec1[100], vec2[100], rez[100];
printf("Introduceti lungimea vectorilor.\n");
scanf_s("%i", &n);
printf("Introduceti elementele primului vector.\n");
for (i = 0; i < n; i++) {
scanf_s("%i", &vec1[i]);
}
printf("Introduceti elementele celui de-al doilea vector.\n");
for (i = 0; i < n; i++) {
scanf_s("%i", &vec2[i]);
}
for (i = 0; i < n; i++) {
rez[i] = vec1[i] * vec2[i];
}
printf("Produsul vectorial al celor doi vectori este: ");
for (i = 0; i < n; i++) {
printf("%i ", rez[i]);
}
_getch();
}
3. Screti programul C care determina minimul si maximul dintr-o matrice dreptunghiulara. (1.2)
4. Sa se scrie programul C care realizeaza adunarea a doua matrice.
#include <stdio.h>
#include <conio.h>
int main() {
int i, j, m, n, a[100][100], b[100][100], c[100][100];
printf("Nr. de linii si de coloane:\n");
scanf_s("%i %i", &m, &n);
printf("Introduceti valorile celor %i elemente ale primei matrici:\n", m*n);
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf_s("%i", &a[i][j]);
}
}
printf("Prima matrice este:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%i ", a[i][j]);
}
printf("\n");
}
printf("Introduceti valorile celor %i elemente ale celei de-a doua matrici:\n", m*n);
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf_s("%i", &b[i][j]);
}
}
printf("A doua matrice este:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%i ", b[i][j]);
}
printf("\n");
}
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
c[i][j]=a[i][j]+b[i][j];
}
}
printf("Suma celor doua matrici este:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%i ", c[i][j]);
}
printf("\n");
}
_getch();
}
5. Fie o matrice de dimensiuni mxn, reprezentand consumurile de energie pentru fabricarea a
m produse intr-o perioada de n zile. Sa se scrie programul C care afiseaza produsele care au
inregistrat consumuri constante pe intreaga perioada.

#include <stdio.h>
#include <conio.h>

int main() {
int m, n, i, j, l, rez[100], mat[100][100];
printf("Dati numarul de produse(linii).\n");
scanf_s("%i", &m);
printf("Dati numarul de zile(coloane).\n");
scanf_s("%i", &n);
printf("Dati elementele matricei.\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("mat[%i][%i]=", i, j);
scanf_s("%i", &mat[i][j]);
}
}
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("mat[%i][%i]=%i ", i, j, mat[i][j]);
}
printf("\n");
}
l = 0;
for(i=0;i<m;i++){
j = l;
while (j < n&&mat[i][j] == mat[i][0])j++;
if (j == n) {
rez[l] = i;
l++;
}
}
printf("Produsele care au inregistrat consumuri constante sunt: ");
for (i = 0; i < l; i++) {
printf("%i ", rez[i]);
}
_getch();
}
1. Fie un masiv unidimensional (vector) alocat dinamic. Sa se realizeze urmatoarele:
- sa se declare masivul - sa se citeasca elementele de la tastatura - sa se afiseze
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
int main() {
int *p;
int i, n;
printf("Introduceti lungimea vectorului\n");
scanf_s("%i", &n);
p = (int*)malloc(n * sizeof(int));

for (i = 0; i<n; i++){


printf("p[%d]=", i);
scanf_s("%d", (p + i));
}
for (i = 0; i < n; i++)
printf("p[%d]= %d\n", i, *(p + i));
free(p);
_getch();
}
2. Fie un masiv bidimensional (matrice) alocat dinamic. Sa se realizeze urmatoarele:
- sa se declare masivul - sa se citeasca elementele de la tastatura - sa se afiseze
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
int main() {
int **mat1;
int m, n, i, j;
printf("Nr. de linii:\n");
scanf_s("%i", &m);
printf("Nr. de coloane:\n");
scanf_s("%i", &n);
mat1 = (int**)malloc(m * sizeof(int*));
for (i = 0; i<m; i++)
*(mat1 + i) = (int*)malloc(n * sizeof(int));
for (i = 0; i<m; i++)
for (j = 0; j<n; j++) {
printf("mat1[%d][%d]=", i, j);
scanf_s("%d", *(mat1 + i) + j);
}
for (i = 0; i<m; i++) {
for (j = 0; j<n; j++)
printf("%d ", *(*(mat1 + i) + j));
printf("\n");
}
for (i = 0; i<m; i++)
free(*(mat1 + i));
free(mat1);
_getch();
}
3. Sa se realizeze programul care calculeaza produsul vectorial a doi vectori alocati dinamic.
Rezultatul va fi trecut in al treilea vector alocat dinamic.

#include <stdio.h>
#include <conio.h>
#include <malloc.h>

int main() {
int *p, *q, *rez;
int i, n;
printf("Dati lungimea vectorilor:\n");
scanf_s("%i", &n);
p = (int*)malloc(n * sizeof(int));
q = (int*)malloc(n * sizeof(int));
rez = (int*)malloc(n * sizeof(int));
for (i = 0; i<n; i++) {
printf("p[%i]=", i);
scanf_s("%i", (p + i));
}
for (i = 0; i<n; i++) {
printf("q[%i]=", i);
scanf_s("%i", (q + i));
}
for (i = 0; i < n; i++) {
*(rez + i) = *(p + i)**(q + i);
}
for (i = 0; i < n; i++) {
printf("rez[%i]=%i\n", i, *(rez+i));
}
free(p);
free(q);
free(rez);
_getch();
}
4. Sa se realizeze interclasarea a doi vectori de dimensiuni diferite. Masivele vor fi alocate
dinamic in interiorul programului.

#include <stdio.h>
#include <conio.h>
#include <malloc.h>

int main() {
int m, n, p, i, j;
float *x, *y, *z;
printf("Dati lungimea primului vector:\n");
scanf_s("%i", &m);
x = (float*)malloc(m * sizeof(float));
printf("Introduceti valorile vectorului:\n");
for (i = 0; i < m; i++) {
printf("x[%i]=", i);
scanf_s("%f", (x + i));
}
printf("Dati lungimea celui de-al doilea vector:\n");
scanf_s("%i", &n);
y = (float*)malloc(n * sizeof(float));
for (i = 0; i < n; i++) {
printf("y[%i]=", i);
scanf_s("%f", (y + i));
}
z = (float*)malloc(m+n * sizeof(float));
i = 0;
j = 0;
p = 0;
while ((i<m) && (j<n)){
if (x[i] < y[j])
z[p++] = x[i++];
else z[p++] = y[j++];
}
while (i<m) z[p++] = x[i++];
while (j<n) z[p++] = y[j++];
printf("Rezultatul interclasarii vectorilor x si y este:\n");
for (i = 0; i < m + n; i++) {
printf("z[%i]=%.2f\n", i, *(z + i));
}
_getch();
}
5. Sa se calculeze suma a doua masive bidimensionale alocate dinamic.
#include <stdio.h>
#include <conio.h>
#include <malloc.h>

int main() {
int **mat1, **mat2, **matRezAdun;
int m, n, i, j;
printf("Dati numarul de linii pentru mat1 si mat2:\n");
scanf_s("%i", &m);
printf("Dati numarul de coloane pentru mat1 si mat2:\n");
scanf_s("%i", &n);
mat1 = (int**)malloc(m * sizeof(int*));
for (i = 0; i < m; i++)
*(mat1 + i) = (int*)malloc(n * sizeof(int));
mat2 = (int**)malloc(m * sizeof(int*));
for (i = 0; i < m; i++)
*(mat2 + i) = (int*)malloc(n * sizeof(int));
matRezAdun = (int**)malloc(m * sizeof(int*));
for (i = 0; i < m; i++)
*(matRezAdun + i) = (int*)malloc(n * sizeof(int));
printf("Dati elementele matricei mat1:\n");
for (i = 0; i < m; i++)
for (j = 0; j < n; j++) {
printf("mat1[%d][%d]=", i, j);
scanf_s("%d", *(mat1 + i) + j);
}
printf("Dati elementele matricei mat2:\n");
for (i = 0; i < m; i++)
for (j = 0; j < n; j++) {
printf("mat2[%d][%d]=", i, j);
scanf_s("%d", *(mat2 + i) + j);
}
printf("Matricea mat1 este:\n");
for (i = 0; i<m; i++) {
for (j = 0; j<n; j++)
printf("%d ", *(*(mat1 + i) + j));
printf("\n");
}
printf("Matricea mat2 este:\n");
for (i = 0; i<m; i++) {
for (j = 0; j<n; j++)
printf("%d ", *(*(mat2 + i) + j));
printf("\n");
}
for (i = 0; i<m; i++)
for (j = 0; j<n; j++)
*(*(matRezAdun + i) + j) = *(*(mat1 + i) + j) + *(*(mat2 + i) + j);
printf("Matricea adunare este:\n");
for (i = 0; i<m; i++) {
for (j = 0; j<n; j++)
printf("%d ", *(*(matRezAdun + i) + j));
printf("\n");
}
for (i = 0; i<m; i++)
free(*(mat1 + i));
free(mat1);
for (i = 0; i<m; i++)
free(*(mat2 + i));
free(mat2);
for (i = 0; i<m; i++)
free(*(matRezAdun + i));
free(matRezAdun);
_getch();
}

6. Sa se scrie un program pentru determinaea elementului minim din triunghiul de deasupra


diagonalelor unei matrice patrate (inclusiv diagonalele). Matricea este alocata dinamic.
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
int main() {
int **mat1, min;
int m, n, i, j;
printf("Nr. de linii:\n");
scanf_s("%i", &m);
printf("Nr. de coloane:\n");
scanf_s("%i", &n);
mat1 = (int**)malloc(m * sizeof(int*));
for (i = 0; i<m; i++)
*(mat1 + i) = (int*)malloc(n * sizeof(int));
for (i = 0; i<m; i++)
for (j = 0; j<n; j++) {
printf("mat1[%d][%d]=", i, j);
scanf_s("%d", *(mat1 + i) + j);
}
printf("Matricea mat1 este:\n");
for (i = 0; i<m; i++) {
for (j = 0; j<n; j++)
printf("%d ", *(*(mat1 + i) + j));
printf("\n");
}
min = *(*(mat1 + 0) + 0);
for (i = 0; i <= (m - 1) / 2; i++)
for (j = i + 1; j <= m - 1; j++)
if ((*(*(mat1 + i) + j))<min) min = *(*(mat1 + i) + j);
printf("Minimul este: %i\n", min);
for (i = 0; i<m; i++)
free(*(mat1 + i));
free(mat1);
_getch();
}
7. Fie un masiv bidimensional de numere intregi, reprezentand valorile de carburant
inregistrate de m masini intr-o perioada de n zile. Sa se scrie un program pentru calcularea
numarului de aparitii a unei valori citite de la tastatura in masiv. Masivul este alocat dinamic.

#include <stdio.h>
#include <conio.h>
#include <malloc.h>

int main() {
int **mat1;
int m, n, i, j, val, nr;
printf("Nr. de linii:\n");
scanf_s("%i", &m);
printf("Nr. de coloane:\n");
scanf_s("%i", &n);
mat1 = (int**)malloc(m * sizeof(int*));
for (i = 0; i < m; i++)
*(mat1 + i) = (int*)malloc(n * sizeof(int));
for (i = 0; i < m; i++)
for (j = 0; j < n; j++) {
printf("mat1[%d][%d]=", i, j);
scanf_s("%d", *(mat1 + i) + j);
}
printf("Matricea mat1 este:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++)
printf("%d ", *(*(mat1 + i) + j));
printf("\n");
}
printf("Dati valoarea cautata:\n");
scanf_s("%i", &val);
nr = 0;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++)
if (*(*(mat1 + i) + j) == val)
nr = nr + 1;
}
printf("Valoarea cautata apare de %i ori.\n", nr);
for (i = 0; i<m; i++)
free(*(mat1 + i));
free(mat1);
_getch();
}
1. Realizati programul C care sorteaza un vector prin metoda interschimbarii folosind
subprograme pentru: - citirea vectorului - afisarea vectorului - sortare vector.

#include <stdio.h>
#include <conio.h>

void citireVector(int p[100], int m) {


int i;
for (i = 0; i < m; i++) {
printf("p[%i]=", i);
scanf_s("%i", &p[i]);
}
}

void afisareVector(int p[100], int m) {


int i;
for (i = 0; i < m; i++) {
printf("p=[%i]=%i\n", i, p[i]);
}
}

void sortareVector(int p[100], int m) {


int i, aux, b;
b = 1;
while (b == 1) {
b = 0;
for (i = 0; i < m - 1; i++) {
if (p[i] > p[i+1]) {
aux = p[i];
p[i] = p[i + 1];
p[i + 1] = aux;
b = 1;
}
}
}
}
int main() {
int p1[100];
int n;
printf("Dati dimensiune vector:\n");
scanf_s("%i", &n);
citireVector(p1, n);
printf("Vectorul este:\n");
afisareVector(p1, n);
sortareVector(p1, n);
printf("Vectorul sortat este:\n");
afisareVector(p1, n);
_getch();
}
2. Scrieti programul C care calculeaza produsul vectorial între doi vectori alocaţi static folosind
subprograme pentru:- citirea vectorului, afisarea vectorului- calculul produsului vectorial.

#include <stdio.h>
#include <conio.h>

void citireVector(int p[100], int m) {


int i;
for (i = 0; i < m; i++) {
printf("p[%i]=", i);
scanf_s("%i", &p[i]);
}
}

void afisareVector(int p[100], int m) {


int i;
for (i = 0; i < m; i++) {
printf("p=[%i]=%i\n", i, p[i]);
}
}

void produsVectorial(int p1[100], int p2[100], int m, int rezVectorial[100]) {


int i;
for (i = 0; i < m; i++) {
rezVectorial[i] = p1[i] * p2[i];
}
}

int main() {
int p[100], q[100], n, prodrez[100];
printf("Dati marimea vectorilor:\n");
scanf_s("%i", &n);
printf("Dati elementele vectorului p:\n");
citireVector(p, n);
printf("Dati elementele vectorului q:\n");
citireVector(q, n);
produsVectorial(p, q, n, prodrez);
printf("Produsul vectorial al celor 2 vectori este:\n");
afisareVector(prodrez, n);
_getch();
}

S-ar putea să vă placă și