Problem bei der Logik
-
Hallo.
Ich habe heute einen Code geschrieben der die Schulnoten berechnen soll aber er macht nicht das was ich will.
Er sollte folgendes machen:
Auf Eingabe warten und schauen ob es eine Zahl zwischen 1 und 6 ist das ist die Anzahl der Noten die erwartet werden dann werden alle Noten zusammen gezählt(auch hier wird geschaut ob das ganze zwischen 1 und 6 ist)und dann wird der Durchschnitt errechnet.
Leider geht die Überprüfung bei der ersten Eingabe nicht,die Fehlerstrings werden bei der zweiten nicht korrekt ausgegeben(nur bei jeder zweiten Zahl) und es werden mehr Zahlen erwartet(2 mehr)als er eigentlich annehmen sollte.
Code://programm zur berechnung von schulnoten #include <iostream> using namespace std; int main (void) { float anzahl = 0.0; float helper2 = 0.0; float helper = 0.0; int i = 0 ; float tmp = 0.0; cout << "Guten Tag, bitte geben sie die Anzahl ihrer Noten ein\n"; cin >> anzahl; if(!anzahl > 0 && anzahl < 7) { cout << "Bitte geben sie Zahlen zwischen 1 und 6 ein\n"; cin >> tmp; anzahl = tmp; tmp = 0; } else { cout << "Bitte geben sie nun ihre Schulnoten ein\n"; while(i < anzahl) { cin >> helper; if(helper > 0 && helper < 7) { helper2 += helper; i++; } else { cout << "Bitte geben sie Zahlen zwischen 1 und 6 ein\n"; cin >> tmp; helper = tmp; tmp = 0; } } } float erg = (helper2/anzahl); cout << erg << '\n' ; system("Pause"); return 0; }Ich bin verzweifelt ich kann nämlich keinen Fehler entdecken

-
Auf die schnelle:
Statt
if(!anzahl > 0 && anzahl < 7)if(!(anzahl>0 && anzahl < 7))Sonst bindet die NEgation und der Rest von der Priorität her nämlich nicht so, wie du es (wahrscheinlich) gerne hättest.
und anzahl als int anstatt als float deklarieren, das gibt manchmal Probleme.
Felix
-
Danke das wars.

Hab aber meinen Code noch ein bissel abgeändert indem ich die ifs durch Schleifen ersetzt habe.