PDA

Visualizza la versione completa : Programma C++


andrethe97
11-10-2014, 14:52
Ciao a tutti ho un piccolo problema con un programma in C++.
Questo il testo:
programma che legga da tastiera una lunghezza ignota a priori di numeri interi positivi. il programma a
partire dal primo numero inserito, stampa ogni volta la media di tutti i valori. terminare quando il numero inserito negativo
ecco il codice che ho provato a fare : la prima media la fa giusta le altre no

#include <iostream>


using namespace std;


int main() {
int num;
double media=0;
int cont=1;
while(num>=0) {
cout<<"inserire un numero \n";
cin>>num;
cout<<"il numero inserito e' "<<num<<"\n";
media=(media+num)/cont;
cout<<"la media vale "<<media<<"\n";
cont++;
}

system("PAUSE");
return 0;
}




Grazie per il disturbo

minomic
11-10-2014, 15:01
Ciao,
il modo pi semplice per farlo, secondo me, tenere due variabili: una in cui memorizzi la somma di tutti gli elementi immessi, l'altra che fa da contatore e ti dice quanti elementi sono stati inseriti. Ad ogni iterazione la tua media semplicemente il rapporto tra queste variabili.

M.A.W. 1968
11-10-2014, 15:52
In alternativa, e soprattutto per evitare potenziali problemi di overflow, opportuno usare l'apposita formuletta di cumulative moving average (http://en.wikipedia.org/wiki/Moving_average#Cumulative_moving_average), che - in via del tutto eccezionale - riportata abbastanza correttamente perfino su wikipedia.

andrethe97
12-10-2014, 11:44
Grazie mille ti dovrei chiedere un altro piacere...
quando inserisco un numero negativo mi visualizza lo stesso le istruzioni del programma come faccio a far terminare proprio il programma appena inserisco uno negativo?

minomic
12-10-2014, 11:47
Dopo il cin >> num metti un if(num > 0) che racchiuda il resto del ciclo e sei a posto. Il while ti dice che non verr fatta un'altra iterazione, ma quella corrente gi partita. Quindi devi fare un ulteriore controllo all'interno del ciclo.

andrethe97
12-10-2014, 11:50
ah grazie ancora ciao :) buona giornata

Loading