Frage zu logischen Operatoren

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
Kijimea
Beiträge: 2
Registriert: 04.07.2011, 17:12

Frage zu logischen Operatoren

Beitrag von Kijimea »

Servus, ich bin noch total neu im Gebiet von C++ und lese gerade das Buch "C++ für Spieleprogrammierer" seit 2 Tagen. Bisher hab ich eigentlich alles ohne Probleme verstanden und mir ist es auch wichtig bevor ich weitere Kapitel lese, dass ich das was ich gelesen hab auch verstanden habe und selbst umsetzen kann. Nun hab ich allerdings ein "?" da stehen und bitte um etwas Hilfe .. ;)

Es geht mir momentan um den "oder" operator. Beispiel:

char chAuswahl;

cout << "(I)ntro starten" << endl;
cin >> chAuswahl;

if ((chAuswahl == 'i') || (chAuswahl == 'I'))
cout << "Intro wird abgespielt" << endl;

Hier gehts ja darum das man mit nem kleinen oder großem "i" das Intro startet dank des "oder".

Nun hab ich das ganze auch mal mit switch case durch gelesen allerdings ohne "oder" und ich frag mich wie das da funktioniert. switch / case soll ja bei längeren Codes besse als if, else if und so sein.

switch (chAuswahl)
{
case (('i') || ('I')):
cout << "Intro wird abgespielt" << endl;
} break;

wenn ich nun versuche mit "||" ein oder einzubauen für nen großes und kleines I funktioniert es nicht. Und ich les derzeit im Buch auch nichts davon wie man das bei switch case macht.
Wie kann ich das bei switch / case machen ohne für jeden buchstaben 2x nen case für groß und kleinbuchstaben zu verwenden ( dann könnt ich ja gleich bei if, else if bleiben )..

grüße, Kijimea
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Frage zu logischen Operatoren

Beitrag von Aramis »

Hallo und herzlich willkommen im Forum :-)
Wie kann ich das bei switch / case machen ohne für jeden buchstaben 2x nen case für groß und kleinbuchstaben zu verwenden
Ungefaehr so:

Code: Alles auswählen

switch (chAuswahl)
{
case 'i':
case 'I': 
   cout << "Intro wird abgespielt" << endl;
   break;
};
Man nennt das auch 'Durchfallen'. Wenn am Ende eines case-Blocks kein break steht, laeuft das Programm einfach in den naechsten Block hinein.

Oder, noch besser, alle Grossbuchstaben einfach vorab in Kleinbuchstaben umwandeln (ggf. #include <cctype> vor das Programm setzen damit du tolower verwenden kannst):

Code: Alles auswählen

switch (tolower(chAuswahl))
{
case 'i':
   cout << "Intro wird abgespielt" << endl;
   break;
};
Gruss, Alex
Kijimea
Beiträge: 2
Registriert: 04.07.2011, 17:12

Re: Frage zu logischen Operatoren

Beitrag von Kijimea »

Vielen Dank :)
klickverbot
Establishment
Beiträge: 191
Registriert: 01.03.2009, 19:22
Echter Name: David N.

Re: Frage zu logischen Operatoren

Beitrag von klickverbot »

Aramis hat geschrieben:Oder, noch besser, alle Grossbuchstaben einfach vorab in Kleinbuchstaben umwandeln (ggf. #include <cctype> vor das Programm setzen damit du tolower verwenden kannst):

Code: Alles auswählen

switch (tolower(chAuswahl))
{
case 'i':
   cout << "Intro wird abgespielt" << endl;
   break;
};
… was dir aber einer böse Überraschung bescheren kann, wenn der Benutzer eine türkische Locale verwendet. ;)
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

Re: Frage zu logischen Operatoren

Beitrag von IlikeMyLife »

klickverbot hat geschrieben:… was dir aber einer böse Überraschung bescheren kann, wenn der Benutzer eine türkische Locale verwendet. ;)
eine schöne kleine übung für ein späteres kapitel. lassen wir den user nur die gewünschten eingaben machen. alle anderen werden gesperrt ;-)
Antworten