Ciao,
devo fare un programma che, dato in ingresso la dimensione di una matrice quadrata svolga a seconda della scelta dell'utente le sequenti opzioni:
a)La matrice trasposta;
b)La traccia della matrice degli elementi sulla diagonale principale;
c)La somma degli elementi della diagonale secondaria;
d)In caso di matrice di ordine n<=3 il determinante (regola di Sarrus).
Solo che non riesco a capire come si debba fare la matrice trasposta e la traccia (nel senso di codice).
Inoltre penso anche che ci siano degli errori logici?
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, out=0, tot=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);
if(scelta='a')
{
}
else
{
if(scelta='b')
{
printf("Traccia delgi elementi sulla diagonale principale:");
for(x=0; x<cnt; x++)
{
for(y=0; y<cnt; y++)
{
if(x==y)
{
out=mat [x][y];
printf("%f",out);
}
}
}
}
else
{
if(scelta='c')
{
printf("Somma degli elementi sulla diagonale secondaria:");
for(x=0; x<cnt; x++)
{
for(y=0; y<cnt; y++)
{
if(y==-x+cnt)
{
tot=tot+mat [x][y];
printf("%f",tot);
}
}
}
}
else
{
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;
}
Ciao e grazie
P.S. Se vede anche delle altre cose che non vanno nel mio codice fatemelo sapere