Auswahlanweisungen Hilfe!
-
Bei dieser Problemstellung kannst du switch/case nicht verwenden, da nur exakte Integerwerte als Kriterium akzeptiert werden. Es sei denn, du richtest für jede erdenkliche Alterszahl einen eigenen case ein, was bei theoretisch bis zu 120 Jahren nicht wirklich effektiv ist.
Üblicherweise weicht man hier z.B. auf ein if/else-Konstrukt aus:
int alter = 16; int erwachsen = 18; if (alter < erwachsen) Meldung("versuch's nächstes jahr wieder"); else if (alter == erwachsen) // dieser Schritt ist optional, schliesslich ist alles, Meldung("grade so, was?"); // was nicht kleiner als 18 ist automatisch "erwachsen" else Meldung("alles klar, viel spass");Solche Grundsatzfragen sind aber kein Borland-spezifisches Problem und gehören deshalb eigentlich nach "Rund um" (wenn so simpel wie hier) oder nach "ANSI C" bzw. "C++" beit fortgeschrittenen Problemen. In Zukunft also bitte "wmmf" beachten.
-
Vielen vielen Dank ...
Eigentlich wollte ich mit Borland schreiben.
void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption = ""; if(StrToInt(Edit1->Text) < 18) { Label1->Caption = "versuch's nächstes jahr wieder"; } else if(StrToInt(Edit1->Text) <= 18) { Label1->Caption = "grade so, was?"; } else Label1->Caption = "alles klar, viel spass";Aber mir ist nihct klar, wann ich den Switch verwenden soll.? Können Sie hier jemand den Vor-und Nachtiele von Switch sagen???
Mfg,
khine.
-
Switch kannst du verwenden, wenn du einzelne konkrete Zahlen abfragen willst, keine Intervalle. Ansonsten hilft nur if / else.
-
Können Sie mir mein StruckerGramm mail checken, ob ich da korrect Struckergramm gemach habe.
&
http://web5.152220.vserver.de/shwechat/auswahlstruck.jpgMfg,
khine;
-
Sieht (fast) gut aus!

Nur bei
ist Eingabe<=18
ist das < unsinnig! Dort mach besser ==.
Wenn Eigaabe kleiner 18, kommt der gar nicht in den Zweig!
-
Wenn du das <= in ein == umwandelst sollte es stimm. Ich dachte immer das Ding heisst Struktogramm.
-
Braunstein schrieb:
Wenn du das <= in ein == umwandelst sollte es stimm.
Hmm... rein von der Logik her müsste es aber dennoch stimmen. Die Gleichheit ist bei <= ja mit eingeschlossen und die < - Fälle werden zuvor abgefangen.
-
Genau deswegen stimmt es ja nicht. Da das > vorher schon abgefangen wurde landet er beim nachfolgenden <= Zweig ja immer bei true;
-
Hallo
natuerlich stimmt es so (wenn auch etwas .... Abfrage == ware sinnvoller)
ab 19 ist bei "<= 18" immer noch false oder
und bei 18 ist "<= 18" immer noch true
also alles OK oderMfG
Klaus
-
Ihr habt ja recht. War wohl ein kleiner Blackout.