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