Sunteți pe pagina 1din 10

24.12.

2013 Informatica - Matrice multidimensionale: aplicatii rezolvate


info64.ro/Matrice_multidimensionale/#8 1/10

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) */
{

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);
}
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);

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);
}
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);

24.12.2013 Informatica - Matrice multidimensionale: aplicatii rezolvate
info64.ro/Matrice_multidimensionale/#8 10/10
//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);
}
Cutare
Copyright 2013 IToyo

S-ar putea să vă placă și