Realizziamo un algoritmo per il calcolo della somma degli elementi appartenenti alla cornice esterna di una matrice in C.
Consideriamo una matrice a[M][N] e definiamo in 100 il numero massimo di righe e di colonne.
Al solito chiediamo di inserire il numero di righe e di colonne della matrice e controlliamo che il valore inserito non sia maggiore di 100 e non sia minore di 1.
Dopo iniziamo ad inserire gli elementi nella matrice utilizzando due cicli, uno più esterno che scandisce mediante la variabile i le righe e un altro più interno che percorre per mezzo della variabile j le colonne.
Per calcolare la somma degli elementi della cornice esterna della matrice, basta fare questa considerazione:
Gli elementi della cornice esterna saranno quelli dove:
i è uguale a 0 oppure i è uguale a m-1
e j è uguale a 0 oppure j è uguale a n-1
Quindi facciamo un semplice controllo e se la condizione è vera allora facciamo la somma degli elementi appartenenti alla cornice esterna:
if(i==0 || j==0 || i == m-1 || j==n-1)
somma += a[i][j];
Listato completo dell’algoritmo per il calcolo della somma degli elementi appartenenti alla cornice esterna di una matrice in C
#include<stdio.h>
#define N 100
#define M 100
int main(){
int a[M][N],n,m,i,j,somma=0;
do {
printf("Dammi il numero di righe: ");
scanf("%d", &m);
} while ((m>M) || (m<1));
do {
printf("Dammi il numero di colonne: ");
scanf("%d", &n);
} while ((n>N)|| (n<1));
printf("\nInseriamo i dati nella matrice \n");
for (i=0;i<m;i++)
for(j=0;j<n;j++) {
printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
scanf("%d", &a[i][j]);
}
printf("\nStampiamo i dati \n");
for (i=0;i<m;i++) {
printf("\n");
for(j=0;j<n;j++)
printf("\t%d", a[i][j]);
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(i==0 || j==0 || i == m-1 || j==n-1)
somma += a[i][j];
printf("\nsomma = %d",somma);
}
Se volessimo fare la somma degli elementi interni, esclusa la cornice allora basterà creare un’altra variabile:
int somma_i=0, somma_e=0;
.....
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(i==0 || j==0 || i == m-1 || j==n-1)
somma_e += a[i][j];
else somma_i+= a[i][j];
printf("\nsomma cornice = %d\n",somma_e);
printf("\nsomma elementi interni= %d\n",somma_i);
....
Alcuni link utili:
Somma elementi cornice esterna
Somma dei numeri di una matrice
Ricerca elementi in una matrice