Sommare elementi della cornice esterna di una matrice in C

In questa pagina viene mostrato come scrivere un programma in C in grado di sommare gli elementi che compongono la cornice esterna di una matrice.

Per svolgere l’esercizio abbiamo innanzitutto bisogno di una matrice contenente dei valori che possiamo sommare tra di loro. Nello specifico abbiamo due modi principali per definire una matrice. Il primo metodo consiste nel dichiarare ed inizializzare la matrice direttamente nel codice, mentre il secondo modo richiede l’inserimento degli elementi da parte dell’utente.

Innanzitutto abbiamo bisogno di una matrice contenente dei valori, per far ciò possiamo inizializzare la matrice a priori, definendola direttamente nel codice, oppure chiedere all’utente di inserire i valori.

Nella pagina verranno mostrati i codici di entrambe le possibilità. Iniziamo dal primo metodo, ovvero consideriamo una matrice mat di dimensione MxN, dove M ed N sono due macro definite con la direttive #define, utilizzate per indicare il numero di righe e colonne. Inizializziamo tale matrice, inserendo al suo interno dei valori arbitrati.

Per poter sommare gli elementi della cornice esterna della matrice precedentemente definita, abbiamo bisogno di scorrere la matrice utilizzando due cicli for innestati, il primo per scorrere le righe, mentre il secondo per scorrere le colonne. A questo punto per poter considerare solamente la cornice esterna, deve essere verificata la seguente condizione:if(i == 0 || j == 0 || i == M - 1 || j == N - 1)

dove i ed j sono, rispettivamente, le due variabili utilizzate dal ciclo esterno e dal ciclo interno. In particolare tale condizione verifica se ci troviamo nella prima riga della matrice (i==0), oppure se ci troviamo nell’ultima riga (i==M-1), oppure se ci troviamo nella prima colonna (j==0), oppure se ci troviamo nell’ultima colonna (j==N-1). Verificata una delle precedenti condizioni (ne basta una, in quanto viene utilizzato l’OR) ci troveremo sicuramente nella cornice esterna della matrice. Questo significa che possiamo leggere il valore contenuto nell'attuale posizione ed sommarlo ad una apposita variabile (nel nostro caso: somma).

Al termine dei due cicli for, possiamo stampare a schermo la variabile somma, che conterrà la somma degli elementi che compongono la cornice esterna 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 == 0 || j == 0 || i == M - 1 || j == N - 1)
                somma += mat[i][j];
        }
    }

    printf("La somma degli elementi della cornice della matrice vale: %d", somma);

    return 0;
}


La somma degli elementi della cornice della matrice vale: 36

Codice per matrice definita da utente

Di seguito viene riportato il codice del programma, che permette all’utente di decidere la dimensione ed i valori contenuti all’interno della matrice.


#include <stdio.h>

int main(){
    int m, n, somma = 0;
    
    printf("Inserisci numero righe: ");
    scanf("%d", &m);
    printf("Inserisci numero colonne: ");
    scanf("%d", &n);
    
    int mat[m][n];
    
    for(int i=0; i<m; i++){
        for(int j=0; j<n; j++){
            printf("Inserisci valore: ");
            scanf("%d", &mat[i][j]);
        }
    }
  
    for(int i=0; i<m; i++){
        for(int j=0; j<n; j++){
            if(i == 0 || j == 0 || i == m - 1 || j == n - 1)
                somma += mat[i][j];
        }
    }

    printf("La somma degli elementi della cornice della matrice vale: %d", somma);

    return 0;
}

Indice pagine linguaggio C: