"switch()" Problem



  • Hy @ all 🙂

    Ich beschäftige mich seit kurzen mit der SWITCH() Funtion, dabei bin ich auf folgendes Problem gestoßen:
    SWITCH akzeptiert meines Wissens nach nur 2Arten von Variablen: int und char.
    Volglich kan man Anweisungsblocke nur mit EINEM Zeichen oder einer Zahl aufrufen :

    #include <iostream>
    using namespace std;
    
    int main()
    { 
    	char befehl ;
    
    	cout << "ihre Wahl: ";
    	cin >> befehl;
    
          switch(befehl)
    	  {
    	  case 'H': cout << "Hallo" << endl;
    		           break;
    	  case 'S': cout << "Selber" << endl;
    		           break;
    	  default : cout << "falsch" << endl;
    	  }
    	return 0;
    }
    

    In diesen Beispiel wird auf den Buchstaben "H" für "Hallo" mit Hallo geantwortet und auf "S" für "Schüss" mit "Selber".
    Ich möchte aber einen Anweisungsblock mit mit mehreren Zeichen aufrufen.
    In diesem (etwas stumpfen) Beispiel stat "H" "Hallo" und stat "S" "Schüss" eingeben. Wen ich das nämlich versuche in den Queltext zu schreiben bekom ich immer die Fehlermeldung "Zu viele Zeichen in der Konstante" an den Kopf geschmissen. 😡

    Ich wüde gerne Wissen ob es eine Möglichkeit gibt mein Vorhaben umzusetzen und wen ja wie.

    Vielen Dank im Voraus für die Antworten
    Gruss funz$



  • Nicht mit switch, das ist übrigens keine Funktion.
    z.B.:

    char* befehl;
    ...
    if (strcmp(befehl, "Hallo") == 0) {
      ...
    } else if (strcmp(befehl, "Schüss") == 0) {
      ...
    } else {
      ...
    }
    


  • Ich würde auch immer "if" und "else" nehmen! Da stößt man auf viel weniger Probleme. Natürlich ist es aber auch mit case übersichtlich. Außerdem kannst du bei switch auch double verwenden



  • Redhead schrieb:

    Nicht mit switch, das ist übrigens keine Funktion.
    z.B.:

    char* befehl;
    ...
    if (strcmp(befehl, "Hallo") == 0) {
      ...
    } else if (strcmp(befehl, "Schüss") == 0) {
      ...
    } else {
      ...
    }
    

    Aber dan hat man ja nur 3 Alternativen?!? 😕



  • char* befehl;
    ...
    if (strcmp(befehl, "Hallo") == 0) {
      ...
    } else if (strcmp(befehl, "Schüss") == 0) {
      ...
    } else if (strcmp(befehl, "Schüss2") == 0) {
      ...
    } else {
      ...
    }
    

    🙄 🙄



  • Redhead schrieb:

    char* befehl;
    ...
    if (strcmp(befehl, "Hallo") == 0) {
      ...
    } else if (strcmp(befehl, "Schüss") == 0) {
      ...
    } else if (strcmp(befehl, "Schüss2") == 0) {
      ...
    } else {
      ...
    }
    

    🙄 🙄

    Wofür ist das "strcmp" ?



  • strcmp vergleicht 2 Zeichenketten. Also im ersten Fall z.B. die eingegebene Zeichenkette die in der Variablen Befehl steht mit der Zeichenkette "Hallo".


Anmelden zum Antworten