libri-javascript-python

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

Sommare due matrici

Somma dei numeri di una matrice

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C