Matrices bidimensionnelles en C - Applications résolues
1) Élaborer une matrice à deux dimensions, avec des composants entiers, par initialisation au moment de la déclaration.
#include<stdio.h> void main() { int a[][3]={ {2,-9,0}, {7,11,-8}, {2,2,-20}, {12,7,90} }; //l’opperation d’affishage de la matrice avec 4 lignes et 3 colonnes 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) Ecrire une routine pour lire une matrice à deux dimensions avec des components entiers, et l’afficher apres.
#include<stdio.h> void main() { int a[10][10]; /* matrice à deux dimensions de maximum 10 lignes si 10 colonnes pour memorer */ int m,n; /* nombre reel (à la lecture) des rangées et des colonnes de la matrice */ int i,j; //introduire les dimensions de la matrice printf("Entrer le nombre des lignes: "); scanf("%d", &m); printf("Entrer le nombre des colonnes: "); scanf("%d", &n); //Entrer les elements de la matrice printf("Entrer les elements de la matrice: \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]); } //affichage des elements de la matrice 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) Ecrire une routine pour lire une matrice en deux dimensions avec des components entiers, apres l’afficher, et apres calculer la somme des elements de la matrice.
#include<stdio.h> void main() { int a[10][10]; /* matrice en deux dimensions avec un nombre maximum de 10 linii et 10 colonnes pour les memoriser */ int m,n; /* nombre reel (a lire) de rangées et colonnes de la matrice */ int i,j; //Entrer la dimension de la matrice printf("Entrer le nombre des lignes: "); scanf("%d", &m); printf("Entrer le nombre des colonnes: "); scanf("%d", &n); //Entrer les elements de la matrice printf("Entrer les elements de la matrice: \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]); } //affichage des elements de la matrice for(i=0; i<m; i++) { for(j=0; j<n; j++) printf("%5d", a[i][j]); printf("\n"); } //calculer la somme des elements de la matrice int s=0; for(i=0; i<m; i++) for(j=0; j<n; j++) s=s+a[i][j]; printf("\nLa somme des elements est: %d", s); getchar(); int k; scanf("%d", k); }
4) Faire un programme qui charge les nombres de 1 à 12 dans une matrice en deux dimensions et les affiche tour à tour, et apres fait l’echange entre ses lignes.
Obtenir le premier si le dernier element d’une matrice tableau.
// macros de type constante pour le nombre des lignes et de colonnes #define lin 3 #define col 4 #include<stdio.h> //definir un type de matrice avec un nombre inconnu de lignes et colonnes typedef int matrice[lin][col]; //une pemiere fonction d’attribuer des valeur de 1 à dans une matrice en deux dimensions void attribution1(matrice a) { int k=1,i,j; for(i=0;i<lin;i++) for(j=0;j<col;j++) { a[i][j]=k; k++; } } //autre fonction d’attribuer des valeurs de 1 à 12 dans une matrice en deux dimensions void attribution2(matrice a) { int i,j; for(i=0;i<lin;i++) for(j=0;j<col;j++) a[i][j]=(i*col)+j+1; } //l’affichage du premier et du dernier element d’une matrice void afis_prm_ult(matrice a) { printf("\nLe premier element est: %d",a[0][0]); printf("\nLe dernier element est: %d\n",a[lin-1][col-1]); } //l’affichage d’une matrice en deux dimensions sous la forme d’un tableau void affichage(matrice a, char c) { int i,j; printf("\n"); printf("\nMatrice %c est:\n",c); for(i=0;i<lin;i++) { for(j=0;j<col;j++) printf("%4d",a[i][j]); printf("\n"); } } //l’echange des deux lignes lues d’une matrice void echanger(matrice a) { int x,y,j,aux; printf("\nEntrer la ligne pour l’echange: "); scanf("%d",&x); printf("entrer l’autre ligne pour l’echange : "); scanf("%d",&y); /* On fait l’echange ds lignes x et y element pat Element, toute la colonne. */ for(j=0;j<col;j++) { aux=a[x-1][j]; a[x-1][j]=a[y-1][j]; a[y-1][j]=aux; } } // fonction principale d'exécuter void main() { matrice a,b; attribution1(a); attribution2(b); afis_prm_ult(a); affichage(a,'A'); affichage(b,'B'); echanger(a); affichage(a,'A'); getchar(); int k; scanf("%d", k); }
5) Ecrire un programme pour realiser les principaux sommes entre les elements d’une matrice en deux dimensions.
#include<stdio.h> //definir une matrice quand on specifie le nombre des lignes et des colonnes typedef int matrice[10][10]; void lire(matrice a, int *n, char c) { int i,j; printf("Entrer les dates de la matrice %c:\n",c); //introduire la dimension de la matrice printf("\tnombre des lignes(colonnes): "); scanf("%d",n); //introduire les elements de la matrice printf("\telements de la matrice:\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 affichage(matrice a, int n, char c) { int i,j; printf("Matrice %c est:\n",c); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%5d",a[i][j]); printf("\n"); } } //la somme des elements de la matrice void somme1(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("\nLa somme des elements de la matrice est: %d", s); } //somme des elements sur la principale diagonale void somme2(matrice a, int n) { int s=0,i; for(i=0;i<n;i++) s+=a[i][i]; printf("\n\n La somme des elements sur la principale diagonale est: %d", s); } //La somme des elements au desus de la principale diagonale void somme3(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("\n La somme des elements sur la principale diagonale: %d", s); } // somme des elements sous la principale diagonale void somme4(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("\nsomme elementelor de sub diagonala principala este: %d", s); } // somme des elements sur la principale diagonale void somme5(matrice a,int n) { int s=0,i; for(i=n-1;i>=0;i--) s+=a[i][n-i-1]; printf("\n\nsomme elementelor de pe diagonala secundara este: %d", s); } // somme des elements au-dessus de la principale diagonale void somme6(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("\n La somme des elements au-dessus de la secondaire diagonale: %d",s); } // La somme des elements au-dessous de la secondaire diagonale void somme7(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("\n La somme des elements au-dessous de la secondaire diagonale: %d",s); } //somme des elements d’une ligne void somme8(matrice a,int n,int l) { int s=0,j; for(j=0;j<n;j++) s+=a[l-1][j]; printf("somme des elements d’une ligne est: %d",s); } void main() { matrice a,b,c; int n,l; lire(a,&n,'A'); affichage(a,n,'A'); somme1(a,n); somme2(a,n); somme3(a,n); somme4(a,n); somme5(a,n); somme6(a,n); somme7(a,n); printf("\n\nEntrer la ligne pour calculer la somme: "); scanf("%d",&l); somme8(a,n,l); getchar(); int k; scanf("%d", k); }
6) Ecrire un programme pour realiser les principales sommes des elements d’une matrice en deux dimensions, ainsi les fonctions vont transmettre les resultats, pas seulement les afficher dans leur corp.
#include<stdio.h> //definir un type de mtrice avec un nombre inconnu des lignes et colones typedef int matrice[10][10]; void lire(matrice a, int *n, char c) { int i,j; printf("Introduire les dates de la matrice %c:\n",c); //introducerea dimensiunii matricei printf("\tnombre des lignes(colonnes): "); scanf("%d",n); //introduire les elements de la matrice printf("\telements de la matrice:\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 affichage(matrice a, int n, char c) { int i,j; printf("Matrice %c est:\n",c); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%5d",a[i][j]); printf("\n"); } } //somme des elements de la matrice int somme1(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; } //somme des elements de la principale diagonale int somme2(matrice a, int n) { int s=0,i; for(i=0;i<n;i++) s+=a[i][i]; return s; } // somme des elements au-dessus de la principale diagonale int somme3(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; } // somme des elements au-dessous de la principale diagonale int somme4(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; } // somme des elements de la secondaire diagonale int somme5(matrice a,int n) { int s=0,i; for(i=n-1;i>=0;i--) s+=a[i][n-i-1]; return s; } // somme des elements au-dessus de la secondaire diagonale int somme6(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; } // somme des elements au-dessous de la secondaire diagonale int somme7(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; } //somme des elements sur une jigne int somme8(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; lire(a,&n,'A'); affichage(a,n,'A'); printf("\nLa somme des elements est: %d", somme1(a,n)); printf("\nSomme des elements sur la diagonale principale est: %d", somme2(a,n)); printf("\nSomme des elements au-dessus de la diagonale principale est: %d", somme3(a,n)); printf("\nSomme des elements au-dessous la diagonale principale est: %d", somme4(a,n)); printf("\nSomme des elements sur la diagonale secondaire est: %d", somme5(a,n)); printf("\nSomme des elements au-dessus de la diagonale secondaire est: %d", somme6(a,n)); printf("\nSomme des elements au-dessous de la diagonale secondaire est: %d", somme7(a,n)); printf("\n\nEntrer la ligne pour calculer la somme: "); scanf("%d",&l); printf("\nSomme des elements sur une ligne est: %d", somme8(a,n,l)); getchar(); int k; scanf("%d", k); }
7) Ecrire une routine pour lire une matrice en deux dimensions avec des components entiers, puis l’afficher, et puis faire une fonction propre pour retourner la somme des elements de la matrice sur la diagonale secondaire.
#include<stdio.h> //definir un type de matrice avec un nombre des lignes et des colonnes typedef int matrice[10][10]; //la somme des elements de la diagonale secondaire int somme(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; /* matrice en deux dimensions avec un maximum de 10 lignes et 10 colonnes pour memorer */ int n; /* nombre reel (lire) de lignes/colonnes de la matrice */ int i,j; //introduire les dimensions de la matrice printf("Introduire le nombre des lignes: "); scanf("%d", &n); //introduire les elements de la matrice printf("introduire les elements de la matrice: \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]); } //afficher les elements de la matrice printf("Matrice est: \n"); for(i=0; i<n; i++) { for(j=0; j<n; j++) printf("%5d", a[i][j]); printf("\n"); } //affichage de la somme des elements sur la diagonale secondaire printf("\nSomme des elements sur la diagonale secondaire est: %d", somme(a,n)); getchar(); int k; scanf("%d", &k); }
8) Somme de deux matrices.
#include<stdio.h> //definir un type de matrice avec un nombre de lignes et colonnes typedef int matrice[10][10]; void lire(matrice x, int n) // n - nombre de lignes/colonnes { 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]); } } //afficher une matrice en deux dimensions void affichage(matrice x, int n, char* s) { printf("\nMatrice %s est:\n",s); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("\t%d",x[i][j]); printf("\n"); } } //somme de deux matrices void somme(matrice x, matrice y, matrice z, int n) /* dans ce cas on peut retourner la matrice par le type rezulté, pour la matrice est un pointeur (une adresse) */ { 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("Introduire les dimensions de la matrice.\n"); printf("\tnombre de lignes/colonnes: "); scanf("%d",&n); printf("Introduire les elements de la matrice A.\n"); lire(A,n); affichage(A,n,"A"); printf("Introduire les elements de la matrice B.\n"); lire(B,n); affichage(B,n,"B"); somme(A,B,C,n); affichage(C,n,"A+B"); getchar(); int k; scanf("%d", &k); }
9) Multiplication de deux matrices carrées.
#include<stdio.h> //definir un type de matrice avec un nombre de lignes et colonnes typedef int matrice[10][10]; void lire(matrice x, int n) // n – nombre de lignes/colonnes { 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]); } } // afficher une matrice bidimensionnelle void affichage(matrice x, int n, char* s) { printf("\nMatrice %s est:\n",s); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("\t%d",x[i][j]); printf("\n"); } } //Multiplication de deux matrices void multiplication(matrice x, matrice y, matrice z, int n) /* dans ce cas on peut retourner la matrice par le type rezulté, pour matrice est un pointer (une adresse) */ { 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("Introduire lesa dimensions des matrices.\n"); printf("\tnombre des lignes/colonnes: "); scanf("%d",&n); printf("Introduire les elements de la matrice A.\n"); lire(A,n); affichage(A,n,"A"); printf("Introduire les elements de la matrice B.\n"); lire(B,n); affichage(B,n,"B"); multiplication(A,B,C,n); affichage(C,n,"A*B"); getchar(); int k; scanf("%d", &k); }
10) Ecrire un programme qui determine les elements de maximum et minimum dans toute matrice carrée.
#include<stdio.h> void main() { int a[10][10]; /* matrice bidimensionelle avec maximum 10 lignes et 10 colonnes pour les memoriser */ int n; /* nombre reel (lire) de lignes/colonnes, de matrice */ int i,j; //introduire les dimensions de la matrice printf("Introduire le nombre des lignes/colonnes: "); scanf("%d", &n); //introduire les elements de la matrice printf("Introduire les elements de la matrice: \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]); } //affichage des elements de la matrice for(i=0; i<n; i++) { for(j=0; j<n; j++) printf("%5d", a[i][j]); printf("\n"); } //Le maximum et le minimum de la 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("Le maximum et le minimum de la matrice: %d si %d",max,min); getchar(); int k; scanf("%d", k); }