2016-10-06 3 views
-1
struct score 
{ 
    int math; 
    int science; 
    int english; 
    int history; 
    int mapeh; 
    int tle; 
    int filipino; 
}; 

struct info 
{ 
    string firstName; 
    string lastName; 
    score grades; 
    float average; 
    int studentnum; 
    int rank; 
    bool remark; 
}; 

hier ist mein Codeder Schwimmer Variable speichert nicht einen schwebenden Wert

der in den Fächern gespeicherten Wert ist:

85 87 89 90 94 92 95 

jeweils

vector<info> stud; 

for(int i=0; i<stud.size(); i++) 
{ 
stud[i].average= (stud[i].grades.math 
        +stud[i].grades.science 
        +stud[i].grades.english 
        +stud[i].grades.history 
        +stud[i].grades.mapeh 
        +stud[i].grades.tle 
        +stud[i].grades.filipino)/7; 
} 

der Wert gespeichert in Stud [i]. Durchschnitt sollte 90,28 sein, aber stattdessen ist es nur 90.

was habe ich verpasst? Ich habe versucht, den Debugger und es zeigt mir 90 (keine Dezimalzahlen)

setprecision mit es wird mir nur 90.00 zeigen nicht 90.28

i auch versucht haben, den Datentyp für die Themen Wechsel zu schweben, und es hat nicht Arbeit.

danke.

+0

Eine ganze Zahl geteilt durch eine ganze Zahl gibt Ihnen eine ganze Zahl. Alles, was Sie tun, ist das Addieren von Ganzzahlen und dann das Dividieren durch 7, was eine Ganzzahl ist - Ergebnis - Ganzzahl. – PaulMcKenzie

+0

Alle Klassenobjekte sind Ganzzahlen. Sie teilen dann die Summe dieser ganzen Zahlen durch eine andere ganze Zahl, die Ihnen eine ganze Zahl gibt. Versuchen Sie, die "7" zu einer "7.0" zu ändern. – Jvinniec

+0

so durch 7,0 teilen, denke ich –

Antwort

0

Versuchen Sie, diese zu ändern:

stud[i].average= (stud[i].grades.math 
        +stud[i].grades.science 
        +stud[i].grades.english 
        +stud[i].grades.history 
        +stud[i].grades.mapeh 
        +stud[i].grades.tle 
        +stud[i].grades.filipino)/7.0; 

(int)/(float) geben Ihnen einen (float) Ergebnis.

Verwandte Themen