Ich bin totale Anfängerin in C++ und schreibe gerade eine Klasse "BeautyCenter", die verschieden Funktionen bietet, unter anderem auch den BMI-Wert ausrechnen. Nun habe ich aber eine Frage bezüglich der Operatoren in C++: Warum kann man bei der Switch - Funktion "switch(wert)" nicht einfach <20 oder 20-25 schreiben? Und wenn es so nicht geht, wie kann ich das in C++ machen? Die Funktion sieht so aus (Die betreffenden Stellen sind Blau markiert):
C++:
void Center::getBMI() { int wert, gewicht; char geschlecht; float groesse;
cout<<"Sind Sie männlich (m) oder weiblich (w)?"<<endl; cin>>geschlecht; cout<<"Bitte geben Sie Ihr Gewicht in kg ein:"; cin>>gewicht; cout<<"Bitte geben Sie Ihre Groesse in m ein:"; cin>>groesse;
wert = (float) gewicht/(groesse * groesse);
cout<<"Ihr BMI-Wert betraegt:"<<wert<<endl;
cout<<"Somit sind Sie:"<<endl;
switch(geschlecht) { case ('m'): { switch(wert) { case (<20): { cout<<"Untergewichtig!"<<endl; break; }
case (21-25): { cout<<"Normalgewichtig!"<<endl; break; }
case (26-30): { cout<<"Übergewichtig!"<<endl; break; } } }
case ('w'): { switch(wert) { case (<19): { cout<<"Untergewichtig!"<<endl; break; }
case (20-24): { cout<<"Normalgewichtig!"<<endl; break; }
case (25-30): { cout<<"Übergewichtig!"<<endl; break; } } }
}
}
Dieser Post wurde am 03.01.2009 um 22:10 Uhr von FloSoft editiert.
Hallo, also dein Problem liegt darin, dass du nicht verstanden hast wie ein Operator grundsätzlich funktioniert. Ein Operator ist eine Funktion die zwei Werte erwartet. Einen L-Wert und einen W-Wert. z.B. Der Operator für kleiner : < braucht zwei Werte die er miteinander vergleicht. Du kannst nicht einfach <19 oder so schreiben. Erstnest ist das ein Syntax Fehler und für die Maschine komplett unverständlich: WAS? Kleiner als 19? Genauso ist es wenn du 25-30 schreibst. Das Zeichen „-“ ist in C++ Minus nix mehr. Als wenn du 25-30 schreibst bedeutet es 25 MINUS 30 und nicht zwischen 25 und 30. Du solltest das Kapitel über Operatoren noch mal nach schlagen bevor du eigene Klassen schreibst. -- Latein Unterricht ist die spätere Rache der Römer an den Germanen.
Aha..ok hab ich verstanden. Aber wie mach ich das denn jetzt am besten? Ich könnte ja bei dem <19 einfach wert<19 machen oder? Aber ich hab das schon mal probiert und dann hat mir der Compiler wieder ne Fehlermeldung ausgespuckt: case expression not constant Was soll das denn schon wieder bedeuten??