Computerhilfen.de Logo
Forum
Tipps
News

C++ mehrere Zeichen für switch case Abfrage

hi leute ich bin gerade dabei C++ zu erlernen

ich komme soweit ganz gut voran ich hätte nur eine Frage







 hier ein code mit if:

if ((Variable1 == 'j') || (Variable1 == 'J'))
    cout << "Irgendetwas";

diese funktion benötige ich mit switch und case

switch
{
    case ('j'):
    {
        cout << "Irgendetwas";
    }
    break;

  wie klappt das das ich bei der case abfrage auch ein großes "J" mit berücksichtigen kann?

auf diese weise funzt es nicht:


case ('j') || ('J'):
   
und so auch nicht:

case ('j','J')


wie stelle ich das an?


MfG
wye
  

« Letzte Änderung: 14.07.09, 19:22:01 von wye »

Antworten zu C++ mehrere Zeichen für switch case Abfrage:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
2 Leser haben sich bedankt

switch(yourchar)
{
case('j'):
case('J'):
<deincode>
break;
default:
<deincodewennnichtszutrifft>
break;
}

/e: zur erklärung:
Switch-Case abfragen laufen von dem Punkt wo der 1. case true ist bis "break;" oder aber bis zum ende der Abfrage ("}"). Überprüfung ist nur auf genau einen CASE je CASE möglich. Doppelte Bedingungen gibts hier einfach nicht ;) 

« Letzte Änderung: 15.07.09, 10:30:52 von Klischeepunk »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

vielen danke für die antwort
klappt wunderbar

nun habe ich ein derartiges Problem wieder:...



while (chOperator != '+','-','*','/')
{
  //Eingabe des Rechenoperatoren
  cout << "Geben Sie den Rechenoperator ein:(+,-,*,/) ";
  cin >> chOperator;
  cout << endl;
  cout << endl;
}

wie kann ich die 4 grundrechen arten abfragen?

ich will das das programm solange nach einem operator fragt bis man einen der grundrechen arten eingegeben hat


MfG
wye 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
1 Leser hat sich bedankt
Logische Verknüpfungen

du kannst IMMER (egal welche schleife oder sonstiges) nur einen Vergleich anstellen, den stellst du mit chOperator != '+' an.
Dieser Vergleich kann in diesem Fall (ebenso wie bei if oder anderen schleifen) mit weiteren logisch verknüpft werden mit &&, ||, !, ...

 
Zitat

while (chOperator != '+','-','*','/')
{
  //Eingabe des Rechenoperatoren
  cout << "Geben Sie den Rechenoperator ein:(+,-,*,/) ";
  cin >> chOperator;
  cout << endl;
  cout << endl;
}

In diesem Fall wäre das
 
Zitat
while (chOperator != '+' && chOperator != '-' && chOperator != '*' && chOperator != '/')
{
  //Eingabe des Rechenoperatoren
  cout << "Geben Sie den Rechenoperator ein:(+,-,*,/) ";
  cin >> chOperator;
  cout << endl;
  cout << endl;
}
 
-> tu solange NICHT und NICHT und NICHT und NICHT. 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

danke...

hm dein bespiel ist mit "und verknüpfungen" aber ich möchte ja, dass es zB. + oder - ist

 

Zitat
//Schleife bis möglicher Rechenoperator eingegeben wurde
    while (chOperator != '+' || chOperator != '-' || chOperator != '*' || chOperator != '/')
    {
          //Eingabe des Rechenoperatoren
          cout << "Geben Sie den Rechenoperator ein: (+,-,*,/)  ";
          cin >> chOperator;
          cout << endl;
          cout << endl;
    }


das klappt aber leider nicht die schleife wird immer wiederholt egal ob ich + oder / eingebe

wüsste vllt jemand woran das liegt?


MfG
wy
« Letzte Änderung: 15.07.09, 17:27:16 von wye »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

hier der ganze code falls das hilft:

bitte nicht lachen wie gesagt bin anfänger ^^

 

Zitat
//Taschenrechner

#include <iostream>

using namespace std;

int main ()
{
    //Variablen
    char chOperator;
    float fWert1, fWert2 = 0;
    float fErgebnis = 0;
   
    //Eingabe des ersten Wert
    cout << "Geben Sie den ersten Rechenwert ein:  ";
    cin >> fWert1;
    cout << endl;
    cout << endl;
   
    //Schleife bis möglicher Rechenoperator eingegeben wurde
    while (chOperator != '+' || chOperator != '-' || chOperator != '*' || chOperator != '/')
    {
          //Eingabe des Rechenoperatoren
          cout << "Geben Sie den Rechenoperator ein: (+,-,*,/)  ";
          cin >> chOperator;
          cout << endl;
          cout << endl;
    }
   
    //Eingabe des zweiten Wert
    cout << "Geben Sie den zweiten Rechenwert ein:  ";
    cin >> fWert2;
    cout << endl;
    cout << endl;
           
    //Bedingungen
    switch (chOperator)
    {
           //Addition
           case ('+'):
           {
                fErgebnis = fWert1 + fWert2;
                cout << "Das Ergebnis lautet: " << fErgebnis << endl;
           }
           break;
           
           //Subtraktion
           case ('-'):
           {
                fErgebnis = fWert1 - fWert2;
                cout << "Das Ergebnis lautet: " << fErgebnis << endl;
           }
           break;
           
           //Multiplikation
           case ('*'):
           {
                fErgebnis = fWert1 * fWert2;
                cout << "Das Ergebnis lautet: " << fErgebnis << endl;
           }
           break;
           
           //Division
           case ('/'):
           {
                fErgebnis = fWert1 / fWert2;
                cout << "Das Ergebnis lautet: " << fErgebnis << endl;
           }
           break;
           
           //Falsche Eingabe
           default:
           {
                   cout << "Falsche Eingabe" << endl;
           }
    }
   
    return 0;
}                       
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Mit "oder" klappts ja auch nicht. Wenn du unbedingt oder willst, musst du den ganzen Ausdruck negieren, nicht jeden einzelnen Teilausdruck.

while ( !(chOperator == '+' || chOperator == '-' || chOperator == '*' || chOperator == '/') ) {
oder eben so, wie von Klischeepunk vorgeschlagen. Die Ausdrücke sind equivalent. Einfache Logik. Kannst ja mal "zu Fuß" durchgehen, dann kommst du auch drauf. In Kurzform:
Wenn du "oder" nimmst, ist das Zeichen, das du eingibst, immer NICHT + oder NICHT - oder NICHT * oder NICHT /. Logisch oder? Somit ist der ganze Ausdruck immer wahr und die Schleife läuft ewig.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

hm ja ok ich steh grad ein bisschen aufm schlauch, aber ich steig schon iwie durch

vielen dank für die Antwort

MfG
wye

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
1 Leser hat sich bedankt

Pass auf das ist ganz einfach bei OR wird wiederholt sobald EINER der ausdrücke TRUE ist, und mit chOperator != '+' || chOperator != '-' könnten nur beide FALSE werden wenn das eine Zeichen (!) das du überprüfst gleichzeitig + UND - ist (chOperator ist nicht gleich Plus ODER chOperator ist nicht gleich minus).
Mit dem exklusiven UND wird die schleife nur wiederholt solange ALLE vergleiche TRUE sind, was in diesem beispiel nicht eintritt sobald du ne korrekte eingabe hast:
Eingegebenes Zeichen: 'a'
chOperator != '+' && chOperator != '-'
TRUE da ungleich '+'  TRUE da ungleich '-' mit && Verknüpft -> TRUE

Eingegebenes Zeichen: '-'
chOperator != '+' && chOperator != '-'
TRUE da ungleich '+'  FALSE da gleich '-' mit && Verknüpft -> FALSE, da einer der Beiden Werte False ist -> Schleifen abbruch.
 
Siehe auch Lisas Antwort und den Link zu logischen Verknüpfungen. 


« Spiele ProgrammierungJava - Leerzeichen aus StringBuilder entfernen »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!