switch case / groß- kleinbuchstaben behandeln

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

switch case / groß- kleinbuchstaben behandeln

Beitrag von IlikeMyLife »

Hallo,

ich stehe derzeit vor einem kleinen problem mit der "switch case" anweisung. dazu ein kleines Beispiel:

Code: Alles auswählen

#include <iostream>

using namespace std;

// Hauptprogramm
int main()
{
 char chAuswahl;

 cout << "Auswahl angeben: ";
 cin >> chAuswahl;

 switch(chAuswahl)
 {
 case('a'):
  {// Todo} break;

 case('b'):
  {// ToDo} break;

 default:
  {// ToDo}
 }
}
Nun meine Frage. Wie lassen sich nun einfach Groß- und Kleinbuchstaben behandeln.
( ein kleines a soll das gleiche bezwecken wie ein großes A )
Mit dem || ( ODER-Operator ) wie ich typischerweise bei if-Abfragen verwende funktioniert es leider nicht...
Bin ich tatsächlich gezwungen dies wie folgt zu handhaben:

Code: Alles auswählen

 case('a'):
 case('A'):
  {// Todo} break;
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: switch case / groß- kleinbuchstaben behandeln

Beitrag von Schrompf »

oder mit

Code: Alles auswählen

switch( tolower( chAuswahl) ) { ... }
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

Re: switch case / groß- kleinbuchstaben behandeln

Beitrag von IlikeMyLife »

EDIT:
musste zwar ein wenig suchen, bis ich fest gestellt habe, wie der befehl includiert wird, aber mit

#include ctype.h


funktioniert.
vielen dank. danach habe ich gesucht.
Zuletzt geändert von IlikeMyLife am 11.10.2011, 09:02, insgesamt 1-mal geändert.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: switch case / groß- kleinbuchstaben behandeln

Beitrag von Aramis »

Davon abgesehen brauchst du keine Klammern im case-Ausdruck, case 'a' reicht vollkommen aus.
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

Re: switch case / groß- kleinbuchstaben behandeln

Beitrag von IlikeMyLife »

ist angewohnheit mittlerweile :-)
ich kann das auch nicht haben, wenn ein codeblock bei einer if-abfrage nur eine zeile lang ist und keine { } vorhanden sind.

EDIT:
Auch noch gefunden...

wenn in den case blöcken kleine buchstaben ( a, b, c ) stehen und großbuchstaben eingegeben werden

Code: Alles auswählen

switch ( tolower ( chAuswahl ))
wenn in den case blöcken große buchstaben ( A, B, C ) stehen und kleinbuchstaben eingegeben werden

Code: Alles auswählen

switch ( toupper ( chAuswahl ))
vielleicht braucht es ja noch einer ;-)
kaiserludi
Establishment
Beiträge: 467
Registriert: 18.04.2002, 15:31

Re: switch case / groß- kleinbuchstaben behandeln

Beitrag von kaiserludi »

IlikeMyLife hat geschrieben:ist angewohnheit mittlerweile :-)
ich kann das auch nicht haben, wenn ein codeblock bei einer if-abfrage nur eine zeile lang ist und keine { } vorhanden sind.
Ich kanns nicht haben, wenn bei nur einer Zeiele {} vorhanden sind oder wenn andauernd überall überflüssige () auftauchen. Das macht den Code so unübersichtlich :D
Da hat wohl jeder so seine Vorlieben.
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da
:)

"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44

Re: switch case / groß- kleinbuchstaben behandeln

Beitrag von DomiOh »

kaiserludi hat geschrieben:
IlikeMyLife hat geschrieben:ist angewohnheit mittlerweile :-)
ich kann das auch nicht haben, wenn ein codeblock bei einer if-abfrage nur eine zeile lang ist und keine { } vorhanden sind.
Ich kanns nicht haben, wenn bei nur einer Zeiele {} vorhanden sind oder wenn andauernd überall überflüssige () auftauchen. Das macht den Code so unübersichtlich :D
Da hat wohl jeder so seine Vorlieben.
Sehe ich auch so.
Nur was ich dann wieder nicht haben kann ist sowas:

Code: Alles auswählen

while(...)
 for (...)
  for (...)
   if (...)
    if (...)
    else
   else
und das alles als Einzeiler OHNE Klammern
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

Re: switch case / groß- kleinbuchstaben behandeln

Beitrag von IlikeMyLife »

DomiOh hat geschrieben:

Code: Alles auswählen

while(...)
 for (...)
  for (...)
   if (...)
    if (...)
    else
   else
und das alles als Einzeiler OHNE Klammern
da würde ich nicht mal mit passender kommentierung durchblicken und würde von hand den quellcode erst einmal umschreiben
kaiserludi
Establishment
Beiträge: 467
Registriert: 18.04.2002, 15:31

Re: switch case / groß- kleinbuchstaben behandeln

Beitrag von kaiserludi »

Muss nur vernünftig formatiert sein, schon steigt man wieder durch:

Code: Alles auswählen

while(...)
    for(...)
        for(...)
            if(...)
                if(...)
                else
            else
Mit 1-Space Tabs verliert man doch bei jedem Code die Übersicht ;)
Sobald ein if-else-Konstrukt innerhalb einer Schleife ist, bekommt die Schleife aber bei mir {}, auch wenn es ohne ginge, einfach weil ihr Rumpf dann eben rein optisch mehrere Zeilen auf der selben Einrückungs-Ebene umfasst.
und ineinander verschachtelte if-else bedeuten auch, bis auf die innerste Ebene gibts {}, sonst passiert nämlich ganz schnell mal sowas:

Code: Alles auswählen

if(...)
    if(...)
else
Für den Leser scheint das else zum ersten if zu gehören, syntaktisch gehört es aber zum zweiten.

Bei mir sähe der Code also so aus:

Code: Alles auswählen

while(...)
{
    for(...)
    {
        for(...)
        {
            if(...)
            {
                if(...)
                    /* one-liner */;
                else
                    /* one-liner */;
            }
            else
                /* one-liner */;
        }
    }
}
Bei sowas spar ich mir aber durchaus die Klammern:

Code: Alles auswählen

while(...)
    for(...)
        for(...)
            if(...)
                if(...)
                    /* one-liner */ ;
Das ist einfach übersichtlicher, als wenn man nur wegen der ganzen Klammern in solchem Code die Funktion mal eben vertikal doppelt so viel Platz im Code einnimmt.
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da
:)

"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

Re: switch case / groß- kleinbuchstaben behandeln

Beitrag von IlikeMyLife »

ich denke mal, ich werde es später mal am eigenen leib feststellen müssen. meine derzeitigen quelltexte pro datei gehen noch nicht über etwa 500 zeilen hinaus. in größeren projekten, in denen eine datei um die 1k - 2k aufwärts geht, wird man das schon merken, was die übersichtlichkeit betrifft
Benutzeravatar
Jonathan
Establishment
Beiträge: 2394
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: switch case / groß- kleinbuchstaben behandeln

Beitrag von Jonathan »

Allerdings kann man sich bei so Konstrukten schon langsam fragen, ob man nicht einen Teil davon in Funktionen auslagert. Oder mehrere Bedingungen zu einer Abfrage zusammenfasst.
Und naja, Quelldateien die mehrere tausend Zeilen haben kann man ja evtl. auch ein wenig unterteilen, der Übersicht zur Liebe.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten