Warum nimmt mein switch den Wert nicht an ?



  • Kann mir jemand erklären warum mein switch den Wert von Zufall nicht annimmt ?

    #include <iostream>
    #include <ctime>
    #include <random> 
    
    using namespace std;
    
    int main (){
    
    	int zufall;
    	char auswahl;
    	srand(time(NULL));
    
    	cout << "Waehlen Sie aus was Sie nehmen wollen: " << endl;
    	cout << "1.Schere" << endl;
    	cout << "2.Stein" << endl;
    	cout << "3.Papier" << endl;
     	cin >> auswahl;
    
    	switch(auswahl){
    		case '1': 
    			cout << "Schere VS ";
    			break;
    		case '2':
    			cout << "Stein VS ";
    			break;
    		case '3':
    			cout << "Papier VS ";
    			break;
    	}
    
    	zufall= rand() % 3 +1;
    
    	switch(zufall){
    		case '1': 
    			cout << "Stein";
    			break;
    		case '2':
    			cout << "Papier";
    			break;
    		case '3':
    			cout << "Schere";
    			break;
    	}
    
    	system("pause");
    
    }
    


  • '1' != 1



  • Debuggen und Variable angucken!



  • DocShoe schrieb:

    Debuggen und Variable angucken!

    Was soll denn da falsch sein ?
    rand() gibt doch einen int zurück,warum wird dieser dann aber switch case so angenommen ?



  • Skiller801 schrieb:

    DocShoe schrieb:

    Debuggen und Variable angucken!

    Was soll denn da falsch sein ?
    rand() gibt doch einen int zurück,warum wird dieser dann aber switch case so angenommen ?

    char != int schrieb:

    '1' != 1



  • Wäre glaube ich nicht so cool, wenn jeder durch das Forum gehen würde und einfach die Posts der vorredner kopieren würde und einfach erneut posten würde.

    Mag ja sein das die beiden schon recht haben aber wenn der TE noch mal fragt, dann bringt es nichts ihm noch mal dasselbe zu erzählen, was er ja eh schon nicht verstanden hat.



  • Das Zeichen '1' ist nicht dasselbe wie die Zahl 1.

    Höchstwahrscheinlich hat das Zeichen '1' den Zahlwert 49. Du solltest nicht unterschiedliche Dinge vergleichen, sondern Zahlen mit Zahlen und Zeichen mit Zeichen.



  • wob schrieb:

    Das Zeichen '1' ist nicht dasselbe wie die Zahl 1.

    Höchstwahrscheinlich hat das Zeichen '1' den Zahlwert 49. Du solltest nicht unterschiedliche Dinge vergleichen, sondern Zahlen mit Zahlen und Zeichen mit Zeichen.

    Danke für deine Antwort.
    Jedoch verstehe ich immer noch nicht wieso es nicht funktioniert, funktionieren bei einem switch nur chars ? Gibt rand keinen Int wert zurück ? zufall wurde doch als Int Wert deklariert.

    Ich will doch nur wissen was ich hier gerade nicht weiß, wenn switch z.B keine Ints annimmt dann kann man mir es doch einfach sagen und nicht Rätsel spiele mit mir spielen.
    Ich bin noch ziemlich neu beim programmieren und wahrscheinlich ist das gerade einfach irgendein blöder fehler von mir.



  • Skiller801 schrieb:

    Jedoch verstehe ich immer noch nicht wieso es nicht funktioniert, funktionieren bei einem switch nur chars ? Gibt rand keinen Int wert zurück ? zufall wurde doch als Int Wert deklariert.

    Ich will doch nur wissen was ich hier gerade nicht weiß, wenn switch z.B keine Ints annimmt dann kann man mir es doch einfach sagen und nicht Rätsel spiele mit mir spielen.

    Das ist ganz einfach. 1 ist die Zahl 1. '1' ist das Zeichen '1'. Das Zeichen wird in eine Zahl umgewandelt. Ich weiß nicht auswendig, welche Zahl das Zeichen '1' hat. Musst du mal in einer ASCII Tabelle nachschauen.



  • Skiller801 schrieb:

    Jedoch verstehe ich immer noch nicht wieso es nicht funktioniert, funktionieren bei einem switch nur chars ? Gibt rand keinen Int wert zurück ? zufall wurde doch als Int Wert deklariert.

    Genau, rand und zufall sind int. Mit deinem case '1': vergleichst du aber mit dem Zeichen '1', nicht mit der Zahl 1. Schreib stattdessen einfach case 1: , und schon vergleichst du mit der Zahl 1.



  • Okay, danke euch, genau das wusste ich einfach nicht.
    Was ein blöder Fehler 😃


Anmelden zum Antworten