English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
Tutte le categorie

chi mi aiuta a risolvere un problemino (magari dandomi il codice completo?
Scrivere un programma che calcoli la media di N numeri inseriti dall'utente utilizzando un ciclo for, un ciclo while o un ciclo do-while. Grazie!!!

2007-03-12 08:12:33 · 2 risposte · inviata da diesy_mely 2 in Computer e Internet Programmazione e Design

in C e C++

2007-03-12 08:50:47 · update #1

poe84it: grazie mille per il tuo impegno. ora ci provo. Grazieeeeeeeeeeeeee

2007-03-12 10:13:27 · update #2

2 risposte

Allora.. mettiamo che i numeri siano inseriti in un vettore v.. si potrebbe fare così:
sum=0;
media=0;
for(i=0;i {sum=sum+v[i];

}
media=sum/N;
E avrai il risultato in "media". Sperodi averti aiutato e soprattutto di non aver sbagliato:)

2007-03-12 08:22:30 · answer #1 · answered by Lumicai 2 · 1 0

Ti serve proprio in C ...? O in C++ (naturalmente senza oggetti) va bene uguale?
Dimmi che continuo!
---------------------------------------------------------------------------------
va bhe dai, te lo scrivo in pseudo linguaggio

---------------------------------------------------------------------------------

inizio function media_con_for()

int i, maxi, newentry
double sum

chiedo all'utente il numero di entry che deve inserire e lo memorizzo in maxi

sum = 0

for i = da 1 a maxi

chiedo un numero e lo memorizzo in newentry

sum = sum + newentry

end for

sum = sum / maxi

return sum

end function

---------------------------------------------------------------------------------

inizio function media_con_while()

int i, newentry
double sum

informo l'utente che per terminare l'inserimento deve inserire il carattere di EOF

chiedo all'utente di inserire il primo numero e lo memorizzo in newentry

sum = 0
i = 0

while newentry != EOF

sum = sum + newentry
i++

chiedo all'utente di inserire il numero successivo e lo memorizzo in newentry

loop

if i > 0 then

sum = sum / i
return sum

else

return 0

end if

end function

---------------------------------------------------------------------------------

inizio function media_con_do()

int i, newentry
double sum

informo l'utente che per terminare l'inserimento deve inserire il carattere di EOF

i = 0
sum = 0
newentry = 0

do

sum = sum + newentry

chiedo all'utente di inserire un numero e lo memorizzo in newentry

i++

loop while newentry != EOF

if i > 1 then

sum = sum /( i - 1)
return sum

else

return 0

end if

end function

---------------------------------------------------------------------------------

Per il for è abbastanza intuitivo, per il while invece devo controllare ogni volta se l'utente ha inserito un numero o EOF che implica la fine del ciclo, ma andiamo con ordine, innanzi tutto teniamo in considerazione le operazioni da fare per implementare crrettamente l'elaborazione ed il conteggio dei dati in entrata con un ciclo, le procedure da ripetere sono queste:

Chiedo il numero
Controllo che sia un numero e non EOF
Sommo il numero agli altri
incremento il contatore

Soccome il ciclo While effettua il controllo in testa bisogna organizzare le operazione come suegue, > e < delimitano il ciclo:

...
Chiedo il numero
>
Controllo che sia un numero e non EOF
Sommo il numero agli altri
incremento il contatore
Chiedo il numero
<
...

All'uscita del ciclo avrò che sum è la somma dei numeri inseriti, newentry conterra EOF e i conterra il numero di volte che abbiamo fatto la somma, di conseguenza dobbiamo solo controllare se abbiamo fatto delle somme, ovvero se l'utente non abbia inserito l'EOF senza aver passato prima almeno un numero!

Nel Do...While la situazione è piu o meno simile, dobbiamo sempre rispettare la regola (CCOI, chiedo, controllo, opero, incremento) ma adattata come segue:

>
#Sommo il numero agli altri

Chiedo il numero
incremento il contatore
Controllo che sia un numero e non EOF
<

Dobbiamo far si che l'istruzione contrassegnata con # venga ignorata la prima volta ed eseguita le volte successive, non è necessario un blocco decisionale come IF, basta che il risultato dell'operazione dia un risultato uguale a quello di partenza mantendo l'operazione uguale a quella usata nel ciclo, visto che è una somma, basta assicurarsi che il valore che va ad incrementare sum sia la prima volta 0!
Non dobbiamo preoccuparci del cambiamento di dati in newentry, parche non appena diventerà EOF, non avra il tempo di andare ad influenzare sum poichè il controllo è situato subbito dopo la richiesta, quindi usciremo dal ciclo!
L'unica cosa di cui dobbiamo essere coscienti è che all'uscita noi avremo che sum è la somma dei numeri inseriti, ma i sara la somma degli inserimenti da parte dell'utente, questo include anche che nel conteggio di i è presente l'inserimento di EOF, quindi i e maggiore di una unita rispetto alla reale quantità dei numeri sommati in sum, basta andare a fare una prova, ammettendo che l'utente non inserisca nessunnumero, ma direttamente EOF, ci accorgiamo che i è uguale a 1 nonostante nessun numero sia stato aggiunto a sum!

Spero di essere stato chiaro, se hai bisogno di qualsiasi cosa non indugiare a contattarmi!

2007-03-12 15:25:37 · answer #2 · answered by poe84it 3 · 0 0

fedest.com, questions and answers