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?
Ciao e graziecodice://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; }
P.S. Se vede anche delle altre cose che non vanno nel mio codice fatemelo sapere

Rispondi quotando