C: Matrice bidimensionale - aplicatii rezolvate


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...)


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);
}
Acest site utilizeaza cookie-uri. Navigand in continuare va exprimati acordul asupra folosirii cookie-urilor.