Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal primo numero introdotto, stampa ogni volta la media di tutti i numeri introdotti. Terminare quando il numero inserito è negativo.
Come possiamo procedere alla soluzione?
Possiamo usare un ciclo WHILE che continua fino a quando il numero inserito non è negativo oppure pari a zero.
Manterremo una variabile per memorizzare la somma dei numeri inseriti fino a quel momento ed un’altra variabile per “contare” i numeri inseriti.
Nella soluzione ci sono due variabili, t che sta per totale e memorizza la somma dei valori inseriti, ed i che viene incrementato con l’istruzione i++ (che equivale a scrivere i=i+1).
In questo modo la media sarà data semplicemente da t/i, cioè il totale diviso il numero di valori inseriti.
Ecco di seguito la soluzione.
void main()
{
int a, i, t; //definisco le variabili
float r;
t = 0;
i = 0;
printf (“Inserisci un numero: “);
scanf(“%d”,&a);
while (a >= 0) {
i++; //incremento il contatore
t += a; //calcolo la somma dei valori inseriti
r = t/i; //calcolo la media
printf (“La media attuale è: %.3f\n”, r);
printf (“Inserisci un numero: “);
scanf(“%d”,&a);
}
printf (“La media finale è: %.3f\n”, r);
system(“PAUSE”);
return 0;
}