Visto che gli altri ti stanno aiutando ad usare un vettore per calcolare una distribuzione, ritorno al concerto del Control-Z
Sinceramente sono un po’ stupefatto che tu sia all’uni, tali domande me le aspetto da uno studente alle prime armi nelle superiori.
Prima di tutto DEVI imparare a usare i manuali di programmazione, e sto parlando dei Reference Manual, quelli che puoi accedere semplicemente digitando ‘man’ da terminale. I corsi scolastici ti insegnano i concetti ma non puoi pretendere che ti insegnano i dettagli di TUTTE le funzioni di tutte le librerie (anche quelle native tipo I/O).
In questo caso ti serve la pagina di manuale della funzione scanf() che puoi trovare anche online in mille siti.
La reference manual ha diverse sezioni, quella che interessa te in questo caso è il valore di ritorno, se esiste. La scanf() ritorna un intero che rappresenta il numero dei dati letti e convertiti con successo. Occorrerebbe SEMPRE controllare questo valore, perché è possibile che il dato letto non sia nel formato giusto. Per esempio, cosa succede se digiti un simbolo (tipo il cancelletto) e cerchi di leggerlo usando il formato “%d” ? Ovviamente non può essere letto, il cancelletto NON è un numero, scanf() ritornerà zero. Ma se leggi bene, il manuale ti dice anche che in caso di errore di lettura come per esempio la fine di un file (che corrisponde a digitare Control-Z da tastiera) scanf() ritorna EOF (end of file, definito come -1)
Quindi il tuo codice diventa
C:
while (scanf() != EOF)
{
}
Scusa se non ho usato la formattazione, sto scrivendo da iPhone. EDIT: grazie al gentile admin che ha aggiunto la formattazione del codice