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⤋