Somma massima di 3 numeri consecutivi con vettore in C

Esercizio molto interessante perché unisce almeno due aspetti: l’uso del ciclo for e la struttura dati array. Vogliamo inserire almeno 3 numeri interi positivi o negativi che siano, e fare la somma a tre a tre di tutte le terne consecutive possibili ed indicare quale sia la maggiore in somma.

Chiariamo con un esempio cosa vogliamo ottenere. L’utente inserisce da tastiera un numero intero > 3, che corrisponderà a quanti numeri della serie vogliamo inserire nel programma. Procediamo quindi a leggere i valori richiesti e li inseriamo in un vettore abbastanza capiente. A questo punto procediamo a prendere i numeri a tre a tre e ne facciamo la somma. Ad ogni somma controllo se ho un valore più o meno grande di un valore max intermedio posto in un’altra variabile.

Es. n =7 inserisco in successione { 2 3 -4 1 1 0 -1 } devo visualizzare a schermo 2. Infatti se prendo i numeri consecutivi 2+3-4=-1, 3-4+1=0, -4+1+1=-2, 1+1+0=2, 1+0-1=0. Di queste somme la maggiore è quindi 2! L’algoritmo suggerito per la soluzione:

inizio
inizio
leggi n
leggi n
for i=0; i < n; i++
for i=0; i < n; i++
vettore[i]
vettore[i]
for i=0 i < n-2; i++
for i=0 i < n-2; i++
somma = vettore[i] + vettore[i+1]+ vettore[i+2]
somma = vettore[i] +…
somma > sommamax
somma > somma…
sommamax = somma
sommamax = somma
scrivi sommamax
scrivi sommamax
V
V
F
F
fine
fine
Viewer does not support full SVG 1.1

Il listato del codice suggerito:

#include <stdio.h>

int main() 
{
  int vettore[100];
  int n = 0;
  int i = 0;
  int somma = 0;
  int sommamax = 0;

  while(n < 3)
  {
    printf("Inserisci quanti numeri vuoi leggere ");
    scanf("%d",&n);    
  }  

  //lettura  
  for (i=0; i < n; i++)
  { 
    scanf("%d",&vettore[i]);
  } 

  for (i=0; i < n-2; i++)
  {
      somma = vettore[i] + vettore[i+1] + vettore[i+2];
      if (somma > sommamax)
        sommamax = somma;
  }  

  printf("%d", sommamax);
  
  return 0;
}
  

Ultima modifica 23 Aprile 2022