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:
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