Trovare la trasposta di una matrice

di il
3 risposte

Trovare la trasposta di una matrice

Ciao ragazzi,
sto svolgendo dei vecchi compiti di un esame di programmazione C che dovrò sostenere a breve; in un esercizio si chiede di scrivere una funzione che, data una matrice, restituisca al main la sua trasposta ottenuta non con il metodo classico

[
for(i=0; i<rows; i++){
for(j=0; j<columns; j++){
mat2[j]=mat1[j];
}
}
]

ma scambiando manualmente gli indici, io ho scritto quanto segue ma il programma funziona solo parzialmente (cioè scambia correttamente solo alcuni valori), qualcuno ha idea di come possa risolvere? grazie!

[
for(i=0; i<r; i++){
for(j=0; j<c; j++){
tmp=i;
i=j;
j=tmp;
a[j]=A[j];
}
}
]

3 Risposte

  • Re: Trovare la trasposta di una matrice

    Sei sicura di aver interpretato correttamente la consegna? Perchè non posti la traccia dell'esercizio?
  • Re: Trovare la trasposta di una matrice

    @eleonora,
    per PRIMA COSA bisogna sapere che cosa e' una trasposta

    per SECONDA COSA bisogna sapere, INDIPENDENTEMENTE dal linguaggio di programmazione usato, che cosa si dovrebbe fare per calcolarla

    Per capire che cosa e' una matrice ed una trasposta, NON SERVE essere un programmatore esperto o saper programmare, BASTA CARTA A QUADRETTI E MATITA

    Una volta che ti e' chiaro COME CALCOLARE LA TRASPOSTA con carta e matita, allora puoi cercare di implementarla in C.

    Nel codice che hai postato, c'e' un errore che e' chiaro indizio del non aver capito che cosa e' una trasposta: PERCHE' SCAMBI GLI INDICI????

    Non sono gli indici che devi scambiare, ma qualcosa altro!!!!

    RAGIONA: e' semplice, il tutto si risolve con TRE righe di codice (a parte i vari loop)!
  • Re: Trovare la trasposta di una matrice

    Il codice
    
    for(i=0; i<r; i++){
        for(j=0; j<c; j++){
            tmp=i;
            i=j;
            j=tmp;
            a[i][j]=A[i][j];
        }
    }
    
    è completamente sbagliato, inverti gli indici per entrambe le matrici. In questo modo non fai altro che ricopiare una matrice in un'altra. Infatti mi domando come tu possa affermare che
    il programma funziona solo parzialmente (cioè scambia correttamente solo alcuni valori)
    Se fai una prova con una matrice 3X2 dovresti avere una trasposta di 2X3, invece otterrai di nuovo una 3X2...

    Mi dispiace ma sei un po' troppo lontana dalla soluzione.
Devi accedere o registrarti per scrivere nel forum
3 risposte