Problemamatrice in C

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

#include<stdio.

h>
#include<stdlib.h>

void citire(int** a, int n)


{
const int nr = 10;
int i, j, aux;
for(i=0;i<n;i++)
for (j = 0; j < n; j++)
{
if (i == j)
*(a + i * n + j) = i * nr;
else
{

printf("Dati elementul a[%d][%d]: ", i, j);


scanf("%d", (a + i * n + j));
aux = *(a + i * n + j);

}
}
}

void afisare(int** a, int n)


{
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%d ", *(a + i * n + j));
printf("\n");
}
}

void elemente_pare(int** a, int n)


{
int i, j, aux;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
aux = *(a + i * n + j);
if ((aux & 1) == 0)
printf("%d ", aux);
}
}

void diagonala_printcipala(int** a, int n)


{
int i, j;

for (i = 0; i < n; i++)


{
for (j = 0; j < n; j++)
{
if (i == j)
{
printf("%d ", *(a + i * n + j));
}
}
}
printf("\n");
}

void crescator(int v[100], int n)


{
int ordonat, i, aux;

do {
ordonat = 1;
for (i = 0; i < n-1; i++)
if (v[i] > v[i + 1])
{
aux = v[i];
v[i] = v[i + 1];
v[i + 1] = aux;
ordonat = 0;
}
} while (!ordonat);

for (i = 0; i < n; i++)


printf("%d ", v[i]);
}

void creare_vector(int** a, int n)


{
int i, j, v[100], m, aux;
m = 0;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
aux = *(a + i * n + j);
v[m] = aux;
m++;
}
crescator(v, m);
}

int main()
{
int n, opt, **a = NULL;

while (1)
{
printf("\n1. Citire matrice.\n");
printf("2. Afisare matrice.\n");
printf("3. Elemente pare.\n");
printf("4. Afisare diagonala principala.\n");
printf("5. Ordonare crescator.\n");
printf("0. Iesire.\n");

printf("Dati optiunea: ");


scanf("%d", &opt);

switch (opt)
{
case 1:
do
{
printf("Dati ordinul matricei: ");
scanf("%d", &n);

} while (!(n >= 2 && n<= 10));

a = (int**)malloc(n*n * sizeof(int*));
if (a == NULL)
return;
citire(a, n);
break;

case 2:
printf("Matricea este:\n");
afisare(a, n);
break;

case 3:
printf("Elementele pare sunt:\n");
elemente_pare(a, n);
break;

case 4:
printf("Diagonala principala este:\n");
diagonala_printcipala(a, n);
break;

case 5:
creare_vector(a, n);
break;

case 0:
free(a);
exit(1);
default:
printf("Optiune gresita!");
break;
}
}
return 0;
}

You might also like