switch-case

Post Reply
Message
Author
thomas

switch-case

#1 Post by thomas »

Ich möchte folgendes Problem in einem C-Konsolen-Programm lösen:
Der Benutzer wird aufgefordert, das Symbol, die Ordnungszahl, die englische Bezeichnung oder die deutsche Bezeichnung des von ihm gesuchten chemischen Elements einzugeben. Wenn die Suche erfolgreich ist, das heisst das gesuchte Element existiert tatsächlich, sollten mehr Informationen zu dem Element
angezeigt werden. Z.B. der Benutzer gibt 1, h, H, Wasserstoff, wasserstoff, Hydrogen oder hydrogen ein und es erscheinen nähere Informationen zum chemischen Element Wasserstoff, wie Atommasse, Dichte, Schmelzpunkt etc.
Nun zu meiner Frage: Wie löse ich dieses Problem am einfachsten? Am besten wäre etwas in der Art der switch-case-Konstruktion. Leider kann man die nur so gestallten:

switch (expression) {
case expression1:
statement1;
case expression2:
statement2;
.
.
.
default:
statement-default;

Oder ist etwa auch sowas möglich?:

switch (expression) {
case expression1, expression2:
statement1;
case expression 3, expression4:
statement3;
.
.
.
default:
statement-default;

Dass man die Ausdrücke in case ... nicht mit Kommatas abtrennen kann weiss ich bereits, aber ob es anders geht ist mir nicht bekannt. Ich konnte auch in keinem meiner C-Bücher etwas genaueres darüber finden.
Oder kann man diese Problem auch anders lösen?
Vielen Dank für Eure Hilfe.

Jochen

Re: switch-case

#2 Post by Jochen »

Einfach. Beispielcode folgt:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
switch (expression) {
case expression1:
case expression2:
statement1;

case expression3:
case expression4:
statement3;
.
.
.
default:
statement-default;
} /* end switch */
</font><hr></pre></blockquote>

Aber denk dran: expression darf nur einen abzählbaren Datentyp haben (long, int, short, char).

thomas

Re: switch-case

#3 Post by thomas »

Vielen Dank für die prompte Hilfe!
Ich werds gleich mal ausprobieren.

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: switch-case

#4 Post by hjb »

Hi,

ganz so mächtig ist C nun auch wieder nicht. Nach den case-Statements darf keine beliebige, sondern nur eine konstante Expression stehen.

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Jürgen Wolf

Re: switch-case

#5 Post by Jürgen Wolf »

Doch C ist schon so määäääccchtig :

switch(x)
{
case 1 : case 'h' : case 'H' : function(Wasserstofferklärung);
case 'x' : case 'y' : case 'z' : function(Was auch immer);
..........
..........
default : printf("Unbekannter Stoff
");
}

cu
ANSII-C

Wolf-F@t-online.de

Jochen

Re: switch-case

#6 Post by Jochen »

Hm, Jürgen, hjb hat trotzdem recht: Auch Du verwendest nur konstante Ausdrücke wie 1 oder 'h' in den case-statements.

Post Reply