Ciao,
ho modificato il codice aggiungendo la matrice trasposta, però non so se il codice sia giusto oppure no.
Fatemi sapere.
Ciao e grazie:
codice:
//Matrice quadrata
#include <stdio.h>
#include <string.h>
int main()
{
char scelta=0;
int x=0, y=0, cnt=0;
float mat[10][10], val=0, det=0, tot=0, out=0;
printf("Inserisci il valore che vuoi dare alla radice quadrata:\n");
scanf("%d", &cnt);
printf("Dati per la matrice quadrata: \n\n");
for(x=0; x<cnt; x++)
{
for(y=0; y<cnt; y++)
{
printf("Inserisci i dati della posizione matrice [%d][%d]", x,y);
scanf("%f", &val);
mat [x][y]=val;
}
}
printf("Scegli un' opzione:\n");
printf(" a) La matrice trasposta:\n");
printf(" b) La traccia della matrice degli elementi sulla diagonale principale:\n");
printf(" c) La somma degli elementi della diagonale secondaria:\n");
printf(" d) In caso di matrice di ordine n<=3 il determinante (regola di Sarrus):\n");
printf("Scelta:");
scanf("%c", &scelta);
switch(scelta)
{
case 'a':
{
for(x=0; x<cnt; x++)
{
for(y=0; y<cnt; y++)
{
mat [y][x]=mat[x][y];
out= mat [y][x];
printf("Ora la matrice trasposta ha in posizione [%d][%d] il valore: %f", out);
}
}
}
break;
case 'b':
{
tot=0;
for(x=0; x<cnt; x++)
{
tot=tot+mat [x][x];
}
printf("La traccia degli elementi sulla diagonale principale e\': %f", tot);
}
break;
case 'c':
{
tot=0;
for(x=0; x<cnt; x++)
{
for(y=0; y<cnt; y++)
{
if(y==-x+cnt)
tot=tot+mat [x][y];
}
}
printf("Somma degli elementi sulla diagonale secondaria e\': %f", tot);
}
break;
default:
{
if(cnt<=3)
{
det = mat[0][0]*mat[1][1]*mat[2][2] + mat[0][1]*mat[1][2]*mat[2][0] + mat[0][2]*mat[1][0]*mat[2][1] - mat[2][0]*mat[1][1]*mat[0][2] - mat[2][1]*mat[1][2]*mat[0][0] - mat[2][2]*mat[1][0]*mat[0][1];
printf("Il determinante della matrice e\': %f", det);
}
else
printf("Non si può determinare con la regola di Sarrus ma, bisogna usare quella di Laplace");
}
}
system ("pause");
return 0;
}