PDA

View Full Version : [C++] Calcolare una media


DarkDiablo
23-07-2007, 16:53
Salve a tutti,

sono i primi giorni che ho iniziato a sperimentare le mie nuove conoscenze informatiche, e sarebbe a dire le basi (veramente basi ;)) del c++. Ora, come si inizia subito c'è sempre qualche problema! Nello specifico, quando vado ad eseguire la media tra una somma di numeri e il loro numero (scusate il gioco di parole), il computer mi restituisce dei valore assurdi di 7-8 cifre. Ad esempio se faccio x/y (dove x=5 e y=2 il risutalto è qualcosa come 734523).

Sicuramente sto sbalgiando io qualcosa di veramente stupido, qualcuno mi dà una dirtta? :D

Se può servire vi posto il codice:

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{

int voti, temp, num_voti, conta, media; // dichairo le variabili

voti, temp, num_voti, conta, media = 0; // inizializzo le variabili a 0

cout << "Inserire numero voti\n"; // chiedo il numero di voti da analizzare
cin >> num_voti;

for (conta=1; conta<=num_voti; conta++) // inizia cliclo
{
cout << "inserire voto n " << conta;
cin >> voti;
temp = temp+voti;
} // esci quando hai finito di sommare tutti i voti inseriti

media = temp/conta; // calcola la media dei voti
cout << media; // comunica la media all'utente

system("PAUSE");
return 0; // bye bye il programma è terminato :D
}

stdecden
23-07-2007, 17:05
prova a sostituire il tipo delle variabili da int a float. Cosí non ci sono errori di arrotondamento!!!

DarkDiablo
23-07-2007, 17:09
prova a sostituire il tipo delle variabili da int a float. Cosí non ci sono errori di arrotondamento!!!

ma sei una scheggia! O_O Grazie per la pronta risposta!

Ho tentato questo:

float voti, temp, num_voti, conta, media; // dichairo le variabili

voti, temp, num_voti, conta, media = 0.00; // inizializzo le variabili a 0

Ho messo 2 voti: 2, 2. E come risultato mi dà 1,33 periodico :sofico:
Ho fatto un altro tentativo 3 voti: 2, 3, 4. Il risultato è 2,25 :D

stdecden
23-07-2007, 17:17
un altro suggerimento:
invece di scrivere Variabile = Variablie + Variabile2;
puoi scrivere Variabile += Variabile2;

DarkDiablo
23-07-2007, 17:21
un altro suggerimento:
invece di scrivere Variabile = Variablie + Variabile2;
puoi scrivere Variabile += Variabile2;

ah aveov letto una roba simile da qualche parte, ma non ha avuto effetto purtroppo :( . In ogni caso grazie mi sarà utile in futuro, ho riprovato le stesse sequenze di prime e mi dà gli stessi risultati :oink:

stdecden
23-07-2007, 17:53
Ecco quí, per inizializzare piú variabili devi scrivere:
a = b = c = d = 0;
e non
a,b,c,d = 0;

!!!!

DarkDiablo
23-07-2007, 17:58
Ecco quí, per inizializzare piú variabili devi scrivere:
a = b = c = d = 0;
e non
a,b,c,d = 0;

!!!!

ops non lo sapevo :P, ero andato ad intuito così poi non mi aveva dato errori durante la compilazione :S. Ad ogni modo, non funzia ancora :fagiano: Ho provato con questa riga di codice:

voti = temp = num_voti = conta = media = 0.00; // inizializzo le variabili a 0

ho provato anche inserendo 0 come valore e come tipo di variabile sia int che float ma niente :S. A questo punto o è fuso il mio pc, o non compila a dovere, oppure c'è un errore da qualche altra parte :D. Grazie ancora per la mano che mi stai dando :)

Ah dimenticavo i risultati! Ho provato le stesse sequenze con float i valori sono gli stessi, con int ovviamente arrotonda a 1, e 2.

stdecden
23-07-2007, 18:00
scusami, mentre cercavo di risponderti avevo giá intuitivamente coretto il tuo errore nel codice che ho ricopiato nel mio ambiente:

media = temp/num_voti; // calcola la media dei voti

DarkDiablo
23-07-2007, 18:34
media = temp/num_voti; // calcola la media dei voti

grandioso! Ha funzionato (sarà stato un errore di distrazione? mah mah!) Grazie mille ancora, sei stato davvero gentilissimo quando finirò ti farò avere il programma che calcola i crediti al liceo :P (sempre se ti serve). Rimani all'erta che sicuramente ripasserò a romperti :sofico: , grazie tante ancora :)