1) Se va concepe o matrice bidimensională, având componente întregi, prin iniţializare în momentul declarării (rezolvare...)
2) Se va scrie o rutină care va citi o matrice bidimensională având componente întregi, după care o va afişa (rezolvare...)
3) Se va scrie o rutină care va citi o matrice bidimensională având componente întregi, după care o va afişa, iar apoi va calcula suma elementelor matricei (rezolvare...)
4) Să se realizeze un program care încarcă numerele de la 1 la 12 într-o matrice bidimensională şi le afişează rând cu rând, după care realizează interschimbari între liniile acesteia.
De asemenea se vor obţine primul, respectiv ultimul element dintr-o matrice tablou. (rezolvare...)
5) Se va scrie un program pentru realizarea principalelor sumări între elementele unei matrice bidimensionale (rezolvare...)
6) Se va scrie un program pentru realizarea principalelor sumări între elementele unei matrice bidimensionale, astfel încât funcţiile vor transmite rezultatele, nu doar le vor afişa în interiorul corpului acestora (rezolvare...)
7) Se va scrie o rutină care va citi o matrice bidimensională având componente întregi, după care o va afişa, iar apoi se va face o functie proprie care va returna suma elementelor matricei de pe diagonala secundara (rezolvare...)
8) Suma a doua matrice (rezolvare...)
9) Inmultirea a doua matrice patratice (rezolvare...)
10) Sa se scrie un program care determina elementele de maxim şi minim din întreaga matrice pătratică (rezolvare...)
C: Matrice bidimensionale - aplicatii rezolvate
Rezolvari
#include<stdio.h> void main() { int a[][3]={ {2,-9,0}, {7,11,-8}, {2,2,-20}, {12,7,90} }; //operatia de afisare a matricei declarata avand 4 linii si 3 coloane for(int i=0; i<4; i++) { for(int j=0; j<3; j++) printf("%5d", a[i][j]); printf("\n"); } getchar(); int k; scanf("%d", k); }
#include<stdio.h> void main() { int a[10][10]; /* matricea bidimensionala avand un nr. maximi de 10 linii si 10 coloane ce vor putea fi memorate */ int m,n; /* numarul real (la citire) de randuri, respectiv, de coloane, ale matricei */ int i,j; //introducerea dimensiunilor matricei printf("Introduceti nr de linii: "); scanf("%d", &m); printf("Introduceti nr de coloane: "); scanf("%d", &n); //introducerea elementelor matricii printf("Introduceti elementele matricei: \n"); for(i=0; i<m; i++) for(j=0; j<n; j++) { printf("\tElem [%d,%d]= ", i+1, j+1); scanf("%d", &a[i][j]); } //afisarea elementelor matricei for(i=0; i<m; i++) { for(j=0; j<n; j++) printf("%5d", a[i][j]); printf("\n"); } getchar(); int k; scanf("%d", k); }
#include<stdio.h> void main() { int a[10][10]; /* matricea bidimensionala avand un nr. maximi de 10 linii si 10 coloane ce vor putea fi memorate */ int m,n; /* numarul real (la citire) de randuri, respectiv, de coloane, ale matricei */ int i,j; //introducerea dimensiunilor matricei printf("Introduceti nr de linii: "); scanf("%d", &m); printf("Introduceti nr de coloane: "); scanf("%d", &n); //introducerea elementelor matricii printf("Introduceti elementele matricei: \n"); for(i=0; i<m; i++) for(j=0; j<n; j++) { printf("\tElem [%d,%d]= ", i+1, j+1); scanf("%d", &a[i][j]); } //afisarea elementelor matricei for(i=0; i<m; i++) { for(j=0; j<n; j++) printf("%5d", a[i][j]); printf("\n"); } //calcularea sumei elementelor matricei int s=0; for(i=0; i<m; i++) for(j=0; j<n; j++) s=s+a[i][j]; printf("\nSuma elem. este: %d", s); getchar(); int k; scanf("%d", k); }
//macrouri de tip constante pentru numarul de linii, respectiv de coloane #define lin 3 #define col 4 #include<stdio.h> //definirea unui tip matrice cu un numar specificat de linii si coloane typedef int matrice[lin][col]; //o prima functie de atribuire a valorilor de la 1 la 12 intr-o matrice bidimensionala void atribuire1(matrice a) { int k=1,i,j; for(i=0;i<lin;i++) for(j=0;j<col;j++) { a[i][j]=k; k++; } } //o alta functie de atribuire a valorilor de la 1 la 12 intr-o matrice bidimensionala void atribuire2(matrice a) { int i,j; for(i=0;i<lin;i++) for(j=0;j<col;j++) a[i][j]=(i*col)+j+1; } //afisarea primului, respectiv, al ultimului element dintr-o matrice void afis_prm_ult(matrice a) { printf("\nPrimul element este: %d",a[0][0]); printf("\nUltimul element este: %d\n",a[lin-1][col-1]); } //afisarea unei matrice bidimensionale sub forma unui tablou void afisare(matrice a, char c) { int i,j; printf("\n"); printf("\nMatricea %c este:\n",c); for(i=0;i<lin;i++) { for(j=0;j<col;j++) printf("%4d",a[i][j]); printf("\n"); } } //interschimbarea a doua linii citire intr-o matrice void interschimbare(matrice a) { int x,y,j,aux; printf("\nDati linia care se doreste a se interschimba : "); scanf("%d",&x); printf("Dati linia cu care se doreste interschimbarea : "); scanf("%d",&y); /* Interschimbarea între continutul liniei x cu y se face element cu element prin parcurgerea intregii coloane. */ for(j=0;j<col;j++) { aux=a[x-1][j]; a[x-1][j]=a[y-1][j]; a[y-1][j]=aux; } } //functia principala in rulare void main() { matrice a,b; atribuire1(a); atribuire2(b); afis_prm_ult(a); afisare(a,'A'); afisare(b,'B'); interschimbare(a); afisare(a,'A'); getchar(); int k; scanf("%d", k); }
#include<stdio.h> //definirea unui tip matrice cu un numar specificat de linii si coloane typedef int matrice[10][10]; void citire(matrice a, int *n, char c) { int i,j; printf("Introduceti datele matricei %c:\n",c); //introducerea dimensiunii matricei printf("\tnumarul de linii (coloane): "); scanf("%d",n); //introducerea elementelor matricei printf("\telementele matricei:\n"); for(i=0;i<*n;i++) for(j=0;j<*n;j++) { printf("\t\t%c[%d][%d]= ",c,i+1,j+1); scanf("%d",&a[i][j]); } } void afisare(matrice a, int n, char c) { int i,j; printf("Matricea %c este:\n",c); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%5d",a[i][j]); printf("\n"); } } //suma tuturor elementelor matricei void suma1(matrice a, int n) { int s=0,i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) s+=a[i][j]; printf("\nSuma tuturor elementelor este: %d", s); } //suma elementelor de pe diagonala principala void suma2(matrice a, int n) { int s=0,i; for(i=0;i<n;i++) s+=a[i][i]; printf("\n\nSuma elementelor de pe diagonala principala este: %d", s); } //suma elementelor de deasupra diagonalei principale void suma3(matrice a,int n) { int s=0,i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) s+=a[i][j]; printf("\nSuma elementelor de deasupra diagonalei principale este: %d", s); } //suma elementelor de sub diagonala principala void suma4(matrice a,int n) { int s=0,i,j; for(i=1;i<n;i++) for(j=0;j<=i-1;j++) s+=a[i][j]; printf("\nSuma elementelor de sub diagonala principala este: %d", s); } //suma elementelor de pe diagonala secundara void suma5(matrice a,int n) { int s=0,i; for(i=n-1;i>=0;i--) s+=a[i][n-i-1]; printf("\n\nSuma elementelor de pe diagonala secundara este: %d", s); } //suma elementelor de deasupra diagonalei secundare void suma6(matrice a,int n) { int s=0,i,j; for(i=0;i<n-1;i++) for(j=0;j<=n-2-i;j++) s+=a[i][j]; printf("\nSuma elementelor de deasupra diagonalei secundare este: %d",s); } //suma elemntelor de sub diagonala secundara void suma7(matrice a,int n) { int s=0,i,j; for(i=n-1;i>=1;i--) for(j=n-i;j<n;j++) s+=a[i][j]; printf("\nSuma elemntelor de sub diagonala secundara este: %d",s); } //suma elementelor de pe o anumita linie void suma8(matrice a,int n,int l) { int s=0,j; for(j=0;j<n;j++) s+=a[l-1][j]; printf("Suma elementelor de pe o anumita linie este: %d",s); } void main() { matrice a,b,c; int n,l; citire(a,&n,'A'); afisare(a,n,'A'); suma1(a,n); suma2(a,n); suma3(a,n); suma4(a,n); suma5(a,n); suma6(a,n); suma7(a,n); printf("\n\nDati linia dorita a se calcula suma: "); scanf("%d",&l); suma8(a,n,l); getchar(); int k; scanf("%d", k); }
#include<stdio.h> //definirea unui tip matrice cu un numar specificat de linii si coloane typedef int matrice[10][10]; void citire(matrice a, int *n, char c) { int i,j; printf("Introduceti datele matricei %c:\n",c); //introducerea dimensiunii matricei printf("\tnumarul de linii (coloane): "); scanf("%d",n); //introducerea elementelor matricei printf("\telementele matricei:\n"); for(i=0;i<*n;i++) for(j=0;j<*n;j++) { printf("\t\t%c[%d][%d]= ",c,i+1,j+1); scanf("%d",&a[i][j]); } } void afisare(matrice a, int n, char c) { int i,j; printf("Matricea %c este:\n",c); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%5d",a[i][j]); printf("\n"); } } //suma tuturor elementelor matricei int suma1(matrice a, int n) { int s=0,i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) s+=a[i][j]; return s; } //suma elementelor de pe diagonala principala int suma2(matrice a, int n) { int s=0,i; for(i=0;i<n;i++) s+=a[i][i]; return s; } //suma elementelor de deasupra diagonalei principale int suma3(matrice a,int n) { int s=0,i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) s+=a[i][j]; return s; } //suma elementelor de sub diagonala principala int suma4(matrice a,int n) { int s=0,i,j; for(i=1;i<n;i++) for(j=0;j<=i-1;j++) s+=a[i][j]; return s; } //suma elementelor de pe diagonala secundara int suma5(matrice a,int n) { int s=0,i; for(i=n-1;i>=0;i--) s+=a[i][n-i-1]; return s; } //suma elementelor de deasupra diagonalei secundare int suma6(matrice a,int n) { int s=0,i,j; for(i=0;i<n-1;i++) for(j=0;j<=n-2-i;j++) s+=a[i][j]; return s; } //suma elemntelor de sub diagonala secundara int suma7(matrice a,int n) { int s=0,i,j; for(i=n-1;i>=1;i--) for(j=n-i;j<n;j++) s+=a[i][j]; return s; } //suma elementelor de pe o anumita linie int suma8(matrice a,int n,int l) { int s=0,j; for(j=0;j<n;j++) s+=a[l-1][j]; return s; } void main() { matrice a,b,c; int n,l; citire(a,&n,'A'); afisare(a,n,'A'); printf("\nSuma tuturor elementelor este: %d", suma1(a,n)); printf("\nSuma elementelor de pe diagonala principala este: %d", suma2(a,n)); printf("\nSuma elementelor de deasupra diagonalei principale e: %d", suma3(a,n)); printf("\nSuma elementelor de sub diagonala principala este: %d", suma4(a,n)); printf("\nSuma elementelor de pe diagonala secundara este: %d", suma5(a,n)); printf("\nSuma elementelor de deasupra diagonalei secundare este: %d", suma6(a,n)); printf("\nSuma elemntelor de sub diagonala secundara este: %d", suma7(a,n)); printf("\n\nDati linia dorita a se calcula suma: "); scanf("%d",&l); printf("\nSuma elementelor de pe o anumita linie este: %d", suma8(a,n,l)); getchar(); int k; scanf("%d", k); }
#include<stdio.h> //definirea unui tip matrice cu un numar specificat de linii si coloane typedef int matrice[10][10]; //suma elementelor de pe diagonala secundara int suma(matrice a, int n) { int s=0,i; for(i=n-1;i>=0;i--) s+=a[i][n-i-1]; return s; } void main() { matrice a; /* matricea bidimensionala avand un nr. maximi de 10 linii si 10 coloane ce vor putea fi memorate */ int n; /* numarul real (la citire) de randuri/coloane ale matricei */ int i,j; //introducerea dimensiunilor matricei printf("Introduceti nr de linii: "); scanf("%d", &n); //introducerea elementelor matricii printf("Introduceti elementele matricei: \n"); for(i=0; i<n; i++) for(j=0; j<n; j++) { printf("\tElem [%d,%d]= ", i+1, j+1); scanf("%d", &a[i][j]); } //afisarea elementelor matricei printf("Matricea este: \n"); for(i=0; i<n; i++) { for(j=0; j<n; j++) printf("%5d", a[i][j]); printf("\n"); } //afisarea sumei elementelor de pe diagonala secundara printf("\nSuma elementelor de pe diagonala secundara este: %d", suma(a,n)); getchar(); int k; scanf("%d", &k); }
#include<stdio.h> //definirea unui tip matrice cu un numar specificat de linii si coloane typedef int matrice[10][10]; void citire(matrice x, int n) // n - nr. de linii/coloane { for(int i=0; i<n; i++) for(int j=0; j<n; j++) { printf("\tElem [%d,%d]= ", i+1, j+1); scanf("%d", &x[i][j]); } } //afisarea unei matrice bidimesionala void afisare(matrice x, int n, char* s) { printf("\nMatricea %s este:\n",s); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("\t%d",x[i][j]); printf("\n"); } } //suma a doua matrice void suma(matrice x, matrice y, matrice z, int n) /* in acest caz putem returna matricea prin tipul rezultat, pentru matricea este un pointer (o adresa) */ { for(int i=0;i<n;i++) for(int j=0;j<n;j++) z[i][j] = x[i][j] + y[i][j]; } void main() { matrice A,B,C; int n; printf("Introduceti dimensiunile matricelor.\n"); printf("\tnr. de linii/coloane: "); scanf("%d",&n); printf("Introducem elementele matricei A.\n"); citire(A,n); afisare(A,n,"A"); printf("Introducem elementele matricei B.\n"); citire(B,n); afisare(B,n,"B"); suma(A,B,C,n); afisare(C,n,"A+B"); getchar(); int k; scanf("%d", &k); }
#include<stdio.h> //definirea unui tip matrice cu un numar specificat de linii si coloane typedef int matrice[10][10]; void citire(matrice x, int n) // n - nr. de linii/coloane { for(int i=0; i<n; i++) for(int j=0; j<n; j++) { printf("\tElem [%d,%d]= ", i+1, j+1); scanf("%d", &x[i][j]); } } //afisarea unei matrice bidimesionala void afisare(matrice x, int n, char* s) { printf("\nMatricea %s este:\n",s); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("\t%d",x[i][j]); printf("\n"); } } //inmultirea a doua matrice void inmultire(matrice x, matrice y, matrice z, int n) /* in acest caz putem returna matricea prin tipul rezultat, pentru matricea este un pointer (o adresa) */ { for(int i=0;i<n;i++) for(int j=0;j<n;j++) { z[i][j]=0; for(int k=0;k<n;k++) z[i][j]+=x[i][k]*y[k][j]; } } void main() { matrice A,B,C; int n; printf("Introduceti dimensiunile matricelor.\n"); printf("\tnr. de linii/coloane: "); scanf("%d",&n); printf("Introducem elementele matricei A.\n"); citire(A,n); afisare(A,n,"A"); printf("Introducem elementele matricei B.\n"); citire(B,n); afisare(B,n,"B"); inmultire(A,B,C,n); afisare(C,n,"A*B"); getchar(); int k; scanf("%d", &k); }
#include<stdio.h> void main() { int a[10][10]; /* matricea bidimensionala avand un nr. maximi de 10 linii si 10 coloane ce vor putea fi memorate */ int n; /* numarul real (la citire) de randuri/coloane, ale matricei */ int i,j; //introducerea dimensiunilor matricei printf("Introduceti nr de linii/col: "); scanf("%d", &n); //introducerea elementelor matricii printf("Introduceti elementele matricei: \n"); for(i=0; i<n; i++) for(j=0; j<n; j++) { printf("\tElem [%d,%d]= ", i+1, j+1); scanf("%d", &a[i][j]); } //afisarea elementelor matricei for(i=0; i<n; i++) { for(j=0; j<n; j++) printf("%5d", a[i][j]); printf("\n"); } //Maximul si minimul din intreaga matrice int max=a[0][0]; for(i=0;i<n;i++) for(j=0;j<n;j++) { if(a[i][j]>max) max=a[i][j]; } int min=a[0][0]; for(i=0;i<n;i++) for(j=0;j<n;j++) { if(a[i][j]<min) min=a[i][j]; } printf("Maximul si minuml din matrice: %d si %d",max,min); getchar(); int k; scanf("%d", k); }