SCAMBIO DIAGONALI MATRICE QUADRATA IN C++

tony861
Salve a tutti..devo scrivere un codice che mi permetta di scambiare in una matrice quadrata le diagonali.
sono sicuro che qualcuno è in grado di aiutarmi..aspetto notizie!!
GRAZIE MILLE

Risposte
apatriarca
È un compito? Devi comunque semplicemente iterare su tutti gli elementi delle due diagonali e scambiare tra di loro i corrispondenti valori. La diagonale principale corrisponde ad elementi di indici M e quella secondaria ad elementi di indici M[n-1-i] (nota che in C++ si parte da 0 con gli indici, se gli indici partissero da 1 gli elementi della diagonale secondaria avrebbero indici differenti).

Riuzaki
io farei una funzione di questo tipo:

void scambia(int A[][N])
{
for(int i = 0; i < N; i++)
{
A = A[N - 1 - i];
A[N - 1 - i] = A;
}
}

apatriarca
Riuzaki, il tuo codice non funziona. Per scambiare il contenuto di due variabili non è infatti sufficiente scrivere le due righe che hai scritto, ma devi usare una ulteriore variabile:
void scambia(int a[][N])
{
    for (int i = 0; i < N; ++i) {
        int tmp = a[i][i];
        a[i][i] = a[i][N - 1 - i];
        a[i][N - 1 - i] = tmp;
    }
}

Ci sarebbe anche un metodo che fa a meno della variabile temporanea, ma non offre alcun vantaggio in pratica (in piattaforme in cui molto probabilmente lavorerete).

P.S. Usa il tag code.

Riuzaki
hai assolutamente ragione ho dimenticato il temp :)

tony861
grazie mille a entrambi...adesso ho letto le vostre risposte e il programma ovviamente è perfettamente riuscito :wink:

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.