Introducere in C Instructiuni Pointeri si functii proprii Vectori Matrice bidimensionale Structuri de date Siruri de caractere Recursivitate Lista: stiva si coada Fisiere Grafica in Dev-C++ Bibliografie Introducere in C++ Clase-Obiecte Constructori-Destructori Functii prieten Operatii de intrare-iesire Supraincarcarea op Mostenirea simpla Mostenirea multipla Fisiere Functii si clase generice Bibliografie Matrici rare Aplicatii Java Applet aplicatii Aplicatii android Linkuri utile Tutoriale Facultati de informatica Site-uri prietene C: Matrice bidimensionale - aplicatii rezolvate 1) Se va concepe o matrice bidimensional, avnd componente ntregi, prin iniializare n momentul declarrii (rezolvare...) 2) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup care o va afia (rezolvare...) 3) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup care o va afia, 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 afieaz rnd cu rnd, dup care realizeaz interschimbari ntre liniile acesteia. De asemenea se vor obine primul, respectiv ultimul element dintr-o matrice tablou. (rezolvare...) 5) Se va scrie un program pentru realizarea principalelor sumri ntre elementele unei matrice bidimensionale (rezolvare...) 6) Se va scrie un program pentru realizarea principalelor sumri ntre elementele unei matrice bidimensionale, astfel nct funciile vor transmite rezultatele, nu doar le vor afia n interiorul corpului acestora (rezolvare...) 7) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup care o va afia, 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 ptratic (rezolvare...) Rezolvari 1) Se va concepe o matrice bidimensional, avnd componente ntregi, prin iniializare n momentul declarrii. #include<stdio.h> void main() { int a[][3]={ {2,-9,0}, {7,11,-8}, 24.12.2013 Informatica - Matrice multidimensionale: aplicatii rezolvate info64.ro/Matrice_multidimensionale/#8 2/10 {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); } 2) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup care o va afia. #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); } 3) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup care o va afia, iar apoi va calcula suma elementelor matricei. #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]); } 24.12.2013 Informatica - Matrice multidimensionale: aplicatii rezolvate info64.ro/Matrice_multidimensionale/#8 3/10 //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); } 4) S se realizeze un program care ncarc numerele de la 1 la 12 ntr-o matrice bidimensional i le afieaz rnd cu rnd, dup care realizeaz interschimbari ntre liniile acesteia. De asemenea se vor obine primul, respectiv ultimul element dintr-o matrice tablou. //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);
24.12.2013 Informatica - Matrice multidimensionale: aplicatii rezolvate info64.ro/Matrice_multidimensionale/#8 4/10 /* 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); } 5) Se va scrie un program pentru realizarea principalelor sumri ntre elementele unei matrice bidimensionale. #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); 24.12.2013 Informatica - Matrice multidimensionale: aplicatii rezolvate info64.ro/Matrice_multidimensionale/#8 5/10 } //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); } 24.12.2013 Informatica - Matrice multidimensionale: aplicatii rezolvate info64.ro/Matrice_multidimensionale/#8 6/10 6) Se va scrie un program pentru realizarea principalelor sumri ntre elementele unei matrice bidimensionale, astfel nct funciile vor transmite rezultatele, nu doar le vor afia n interiorul corpului acestora. #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) { 24.12.2013 Informatica - Matrice multidimensionale: aplicatii rezolvate info64.ro/Matrice_multidimensionale/#8 7/10 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); } 7) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup care o va afia, iar apoi se va face o functie proprie care va returna suma elementelor matricei de pe diagonala secundara. #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]); } 24.12.2013 Informatica - Matrice multidimensionale: aplicatii rezolvate info64.ro/Matrice_multidimensionale/#8 8/10 //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); } 8) Suma a doua matrice. #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) */ {
getchar(); int k; scanf("%d", &k); } 24.12.2013 Informatica - Matrice multidimensionale: aplicatii rezolvate info64.ro/Matrice_multidimensionale/#8 9/10 9) Inmultirea a doua matrice patratice. #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);
getchar(); int k; scanf("%d", &k); } 10) Sa se scrie un program care determina elementele de maxim i minim din ntreaga matrice ptratic. #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);