Somma elementi della diagonale principale di una matrice in C

Nella seguente pagina viene mostrato come creare un programma in C in grado di sommare gli elementi che compongono la diagonale principale di una matrice.

Per svolgere tale esercizio, bisogna aver ben noto la definizione di diagonale principale di una matrice, ovvero la diagonale che va dall’angolo in alto a sinistra, all’angolo in basso a destra. Nello specifico, la seconda parte della definizione vale solo per le matrici quadrate, in quanto in matrici non quadrate, non viene raggiunto l’angolo in basso a destra.

Per svolgere questo esercizio faremo uso di una matrice quadrata di dimensione MxN, dove M ed N sono due macro definite tramite la direttiva #define. Inoltre, i valori contenuti all’interno della matrice sono specificati a priori all’interno del codice.

Per capire meglio come trovare la diagonale principale in C, proviamo a ragionare quali sono gli indici degli elementi che compongono tale diagonale. Partendo in alto a sinistra, abbiamo che il primo elemento corrisponde alla posizione [0][0], il secondo elemento della diagonale corrisponde alla posizione [1][1], il terzo a [2][2]. Questo significa che l’indice usato per scorrere le colonne e quello usato per scorrere le righe, devono essere uguali.

Per scorrere la matrice facciamo uso di due cicli for innestati, in cui quello esterno viene usato per scorrere le righe, mentre il ciclo interno per scorrere le colonne. Quindi, per stabilire se l’elemento attuale fa parte della diagonale principale della matrice, dobbiamo verificare la condizione che abbiamo evidenziato precedentemente. Questo significa verificare se i == j, dove i è la variabile utilizzata dal ciclo esterno, mentre j la variabile usata dal ciclo interno. Se tale condizione è verificata allora sommiamo il corrispondente valore della posizione [i][j], ad una variabile precedentemente inizializzata a 0.

Al termine dei due cicli for, la variabile (nel nostro caso somma), conterrà la somma degli elementi che compongono la diagonale principale della matrice.



#include <stdio.h>
#define M 3
#define N 3

int main(){
    int mat[M][N] = {{2, 6, 7}, {4, 2, 1}, {8, 3, 5}};
    int somma = 0;
  
    for(int i=0; i<M; i++){
        for(int j=0; j<N; j++){
            if(i == j)
                somma += mat[i][j];
        }
    }

    printf("Somma diagonale principale vale: %d", somma);

    return 0;
}


Somma diagonale principale vale: 9

Nota: vista la condizione da soddisfare, è possibile utilizzare il seguente codice per calcolare la somma degli elementi della diagonale principale:

Indice pagine linguaggio C: