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);
}
Cookies help us deliver our services. By using our services, you agree to our use of cookies.