
Realizziamo oggi un semplice algoritmo per il calcolo del massimo tra n numeri in C, utilizzando il ciclo for.
Prendere in input n numeri, calcolare e visualizzare il valore massimo.
Soluzione dell’algoritmo per il calcolo del massimo tra n numeri in C
Presentiamo varie soluzioni all’algoritmo proposto.
Innanzitutto chiediamo in input quanti numeri vogliamo inserire (n) e controlliamo che sia comunque un valore maggiore di zero.
Dopo con un ciclo for inseriamo i numeri. Se l’indice i è uguale a 0 allora vuol dire che il numero inserito è il primo e assegniamo a max il suo valore. Poi per ogni numero controlliamo se il numero inserito è maggiore del massimo e se si allora cambiamo il valore di max.
Infine stampiamo in output il valore massimo così ottenuto.
Ecco dunque il listato completo dell’algoritmo per il calcolo del massimo tra n numeri in C:
#include <stdio.h>
main()
{
int n, i, num, max;
do {
printf("Quanti numeri inserire?: ");
scanf("%d", &n);
}while (n<=0);
for(i=0;i<n;i++)
{
printf("Numero %d:", i+1);
scanf("%d", &num);
if(i==0) max=num;
if(num>max) max=num;
}
printf("Il valore massimo e': %d\n", max);
system("PAUSE");
}
Risoluzione passo passo dell’algoritmo
Immaginiamo di inserire 3 numeri: 9, 11, -2.
Il valore massimo è 11.
Vediamo come lo calcola l’algoritmo che abbiamo proposto:
Quindi n=3
Prima iterazione:
for(i=0;i<n;i++) { // i=0 e il test 0<3 è dunque vero
printf(“Numero %d:”, i+1); //Chiediamo il primo numero
scanf(“%d”, &num); //inseriamo il primo numero 9
if(i==0) max=num; //il test i uguale a zero è vero quindi max=9
if(num>max) max=num; // 9>9 falso
}
Seconda iterazione:
for(i=0;i<n;i++) { // i=1 e il test 1<3 è dunque vero
printf(“Numero %d:”, i+1); //Chiediamo il secondo numero
scanf(“%d”, &num); //inseriamo il secondo numero 11
if(i==0) max=num; //il test i uguale a zero è falso
if(num>max) max=num; //il test 11>9 è vero quindi max=11
}
Terza iterazione:
for(i=0;i<n;i++) { // i=2 e il test 2<3 è dunque vero
printf(“Numero %d:”, i+1); //Chiediamo il terzo numero
scanf(“%d”, &num); //inseriamo il terzo numero -2
if(i==0) max=num; //il test i uguale a zero è falso
if(num>max) max=num; //il test -2>9 è falso
}
Quindi avremo:
for(i=0;i<n;i++) { // i=3 e il test 3<3 è falso
Si esce dal ciclo for e si stampa il valore massimo, cioè 11.
Seconda soluzione dell’algoritmo per il calcolo del massimo tra n numeri in C
Nella seconda soluzione chiediamo di inserire un numero prima del ciclo e assegniamo alla variabile max questo valore. Dopo, dentro il ciclo for basterà confrontare il numero inserito con il valore massimo e se è maggiore lo sostituiamo.
Ecco dunque il listato completo:
#include <stdio.h>
main()
{
int n, i, num, max;
do {
printf("Quanti numeri inserire?: ");
scanf("%d", &n);
}while (n<=0);
printf("Inserisci il 1 numero: ");
scanf("%d", &max);
for(i=1;i<n;i++)
{
printf("Inserisci il %d numero: ", i+1);
scanf("%d", &num);
if(num>max) max=num;
}
printf("Il valore massimo e': %d\n", max);
system("PAUSE");
}
Chiaramente possono esserci altre soluzioni all’algoritmo per il calcolo del massimo tra n numeri in C.
Nelle prossime lezioni affronteremo ancora esercizi utilizzando le strutture iterative.
Alcuni link utili
Allocazione dinamica della memoria con malloc
Esercitazione sulle struct in C
Realizzare un menù di scelta in C
Come sommare gli elementi della cornice esterna
Ricerca elementi in una matrice