Sunteți pe pagina 1din 27

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

1) Se va concepe o matrice bidimensională, având


componente întregi, prin iniţializare în momentul
declarării.
#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);
}

2) Se va scrie o rutină care va citi o matrice


bidimensională având componente întregi, după care o va
afişa.
#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ă având componente întregi, după care o va
afişa, 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]);
}
//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 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.
//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);
}

5) Se va scrie un program pentru realizarea principalelor


sumări î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);
}
//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);
}

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

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

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

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 pătratică.
#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);
}

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