Salve a tutti ragazzi, ho iniziato a studiare il linguaggio C da meno di una settimana.
Stavo facendo un esercizio che chiede:
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.
Io l'ho fatto così:
#include <stdio.h>
#include <stdlib.h>
main () {
float media, somma, i, a;
i=0;
somma=0;
media=0;
do {
printf("Inserisci il numero:\n");
scanf("%f",&a);
fflush(stdin);
++i;
somma=somma+a;
media=somma/i;
printf("la media e':%.2f\n",media);
}
while(a>0);
system("pause");
return 0;
}
I problemi sono 2:
1)Il testo dice di utilizzare un intero, ma quando faccio questo, il risultato media, viene un intero, quindi ho fatto di testa mia
ed ho messo un float.
2) Nel "while" la condizione è "a>0", il problema è mi riesegue il contenuto del "do" anche inserendo un valore negativo, e questo penso sia
dovuto ai tipi di dato.
Inoltre dovrei fare qualche miglioria mettendo un if all'interno del do per fare in modo che il contenuto del do venga eseguito solo se a è maggiore o uguale a 0.
Vorrei capire perchè riscontro i due problemi elencati.
Grazie a tutti in anticipo