Bedingte Verzweigungen die 2.
-
Die Aufgabe geht weiter... Der erste TEil bis zum Ausrechnen des Durchschnitts klappt. Dann soll in Abhängigkeit der Durchschnittsnote die übliche Bezeichnung ausgegeben werden... Aber das Programm gibt immer nur Sehr Gut aus.... Was mach ich falsch???
Schon im voraus Danke!!
int main () { int notenanzahl=0; float summe=0; int note = 0; float durchschnitt=0; do { cout<< "Bitte die Note eingeben: "; cin>> note; summe=summe+note; notenanzahl++; } while(note!=0); notenanzahl--; durchschnitt=summe/notenanzahl; cout<< "Die Durchschnittsnote ist: "<< durchschnitt <<endl; if (durchschnitt = '1') { cout << "Sehr Gut! "; } else if (durchschnitt = '2') { cout << "Gut!"; } else if (durchschnitt = '3') { cout << "Befriedigentd!"; } else if (durchschnitt = '4') { cout << "Genügend!"; } else if (durchschnitt = '5') { cout << "Die Allgemeinen Leistungen sind Nicht Genügend!"; } else if (durchschnitt = '6') { cout << "Die Arbeit muss auf Grund zu schlechter Leistungen wiederholt werden!"; } return 0; }
-
[cpp]
if(notenanzahl **==**1) //=ist der zuweisungoperater == hingegen der vergleichs
//operator
{...}
[/cpp]edit: passt was mit den cpp tags nicht ? o.0
-
So sollen wir Bedingte Verzweigungen lernen...Bestimmt geht es einfacher... aber... naja,

-
Wenn ich == mache, Hört er gleich nach Durchschnitt auf und geht gar nicht mehr zu den ifs.....
-
mach das int notenanzahl mal zu nem float und schau was passiert

ach ja das fällt mir jetzt erst auf : mach bei den if abfragen die hochkommas weg, damit signalisierst du dem compiler nur, das das ein char sein soll und in der ascii tabelle hat die 1 nicht den wert "1" sondern 97 oder so
-
Hochkommas weg, notenanzahl auf float, und trotzdem geht er immer nur bis zu die Durchschnittsnote ist... Wenn ich mit einem = mache, macht das Programm immer Sehr gut

-
Du vergleichst nur auf ganze Zahlen. Was ist aber wenn der Durchschnitt z.B. 2.5 ist?
Das passt dann in keine Abfrage rein.Versuche das mal so:
if (durchschnitt >= 5.5) { cout << "Die Arbeit muss auf Grund zu schlechter Leistungen wiederholt werden!"; } else if (durchschnitt >= 4.5) { cout << "Die Allgemeinen Leistungen sind Nicht Genügend!"; } else if (durchschnitt >= 3.5) { cout << "Genügend!"; } else if (durchschnitt >= 2.5) { cout << "Befriedigentd!"; } else if (durchschnitt >= 1.5) { cout << "Gut!"; } else { cout << "Sehr Gut! "; }
-
Klappt leider auch nicht. Er bleibt immer bei Sehr gut! Muss man da noch Anweisungen dazwischenbauen???
Ist else if denn überhaupt richtig???
-
Hallo,
#include <iostream> using namespace std; int runden(float f) { int i = static_cast<int>(f); if ((f-i)>=0.5) ++i; return i; }; int main() { char *noten[] = {"Sehr gut", "Gut", "Befriedigend", "Ausreichend", "Mangelhaft", "Ungenuegend"}; int notenanzahl = -1; //wegen überflüssiger Eingabe der 0 als Eingabeende gleich eins niedriger gesetzt float summe = 0.0; float note = 0.0; float durchschnitt=0.0; do { cout << "Bitte die Note eingeben: "; cin >> note; summe += note; ++notenanzahl; } while(note != 0.0); durchschnitt = summe/notenanzahl; cout<< "Die Durchschnittsnote ist: "<< durchschnitt <<'\n'; cout<< noten[runden(durchschnitt)-1] <<'\n'; return 0; };Ich hab's jetzt nicht getestet, u.U. sind noch n paar Fehler, hab hier grad keinen Compiler.
EDIT: return 0 vergessen *duck*

MfG
GPC
-
Sorry,
aber für mich als Anfänger ist das zu harter Tobac, dass muss doch ohne static weiß ich was gehen...

-
static_cast ist einfach ein Cast, der mir in dem Fall den Ganzzahlanteil aus der Gleitkommazahl rauszieht, also aus 4.5 die 4 holt.
Funktioniert meine Lösung eigentlich?MfG
GPC
-
Ich habe das gerade mal getestet. Die Lösung von GPC und meine jetzige
funktionieren beide.
Editier einfach mal deinen aktuellen Code in den Startpost rein. Damit wir gucken können, was noch falsch ist.
-
int main () { float notenanzahl=0; float summe=0; int note = 0; float durchschnitt=0; do { cout<< "Bitte die Note eingeben: "; cin>> note; summe=summe+note; notenanzahl++; } while(note!=0); notenanzahl--; durchschnitt=summe/notenanzahl; cout<< "Die Durchschnittsnote ist: "<< durchschnitt <<endl; if (durchschnitt >= 1) { cout << "Sehr Gut! "; } else if (durchschnitt >= 2) { cout << "Gut!"; } else if (durchschnitt >= 3) { cout << "Befriedigentd!"; } else if (durchschnitt >=4) { cout << "Genügend!"; } else if (durchschnitt >= 5) { cout << "Die Allgemeinen Leistungen sind Nicht Genügend!"; } else if (durchschnitt >= 6) { cout << "Die Arbeit muss auf Grund zu schlechter Leistungen wiederholt werden!"; } return 0; }
-
Du prüftst ja zuerst, ob der durchschnitt größer als 1 ist. Das ist er aber auch wenn er z.b. 4 ist.
Es wird also immer "sehr gut" ausgegeben...Schau dir den Post von C Newbie nochmal an.
-
Okay, jetzt hats gefunkt....
Danke, ich hab mir den Post von C Newbie zu wenig genau angeguckt...
Jetzt funktioniert es...
Thanks...

-
edit: verguckt
