PDA

Visualizza la versione completa : programmazione c++ semplice: esercizio con ciclo


e.terry
17-12-2014, 00:21
ciao ragazzi!! Scusate per l'ignoranza, ma sono alle prime armi..
devo realizzare IN C++ un programmino dove inserendo n voti in trentesimi, esso restituisca la media aritmetica di essi, sia in 30esimi che in 110esimi.
Piu o meno l'ho impostato, ma ho qualche problemino con l'esecuzione.. windows mi da errore dicendo che il programma ha smesso di funzionare.. mai successo altre volte!! XD cosa ho sbagliato? vi scrivo qui di seguito il codice del programma, spero che qualcuno mi sappia aiutare!! Grazie in anticipo..


#include <iostream>
using namespace std;
int main()
{
int voto;
int somma=0;
int conto=0;
float media_30=(somma/conto);
float media_110=((media_30/30)*110);


cout<<"Questo un programma che calcola la media aritmetica dei voti inseriti in trentesimi."<<endl<<"La media sar espressa sia in trentesimi che in 110esimi."<<endl<<endl;
cout<<"Immettere un voto (negativo per smettere):"<<endl<<endl;
cin>>voto;
while(voto>0)
{
conto++;
somma+=voto;
cout<<"Immettere un voto (negativo per smettere):"<<endl;
cin>>voto;
}
if(conto==0)
{
cout<<"Non hai inserito nessun voto!"<<endl;
}
else
{
cout<<"Hai immesso "<<conto<<" voti"<<endl;
cout<<"La media dei tuoi voti su base 30 e: "<<media_30<<endl;
cout<<"La media dei tuoi voti su base 110 e: "<<media_110<<endl;
}
return 0;
}

MItaly
17-12-2014, 01:52
somma/conto
Stai facendo una divisione intera, con conto che uguale a zero e quindi genera un errore di divisione per zero.
Devi:
- spostare dopo il calcolo della media (non che se scrivi prima la formula viene poi magicamente aggiornata in base al cambiamento delle variabili, le variabili memorizzano solo il valore calcolato);
- convertire uno dei due operandi a float, altrimenti in caso di divisione tra due int viene effettuata una divisione intera (che tronca il risultato)

e.terry
17-12-2014, 02:45
ho modificato come mi hai suggerito e funziona!! ;) grazie ti devo un favore!!

Loading