Problem mit switch case



  • Guten Tag,
    ich bin ein blutiger Anfänger, was das Programmieren mit C++ angeht und lerne gerade die Switch Cases und habe dazu eine kleine Übung geschrieben. Jetzt wird aber jedes Mal, nachdem man einen Wert für alter eingegeben hat, jedesmal default ausgeführt, anstatt dem entsprechendem case Fall. Woran liegt das? Ich finde den Fehler nicht.

    #include <iostream>
    
    using namespace std;
    
    int main (void)
    
    {
    
    cout << "Hallo, wie alt bist du?";
    	int alter, alter2 = 15;
    	cin >> alter;
    
    	switch (alter) {
    
    		case'15':
    			cout << "Hey, wir sind ja gleich alt! High Five!";
    		break;
    
    		case'<15':
    			cout << "Ha! Ich bin aelter als du! Genau genommen " << alter2-alter<< "Jahre aelter!";
    		break;
    
    		case '>15 && <18':
    			cout << "Du bist zwar aelter als ich, aber noch nicht volljährig!";
    		break;
    
    		case '<18 && <100':
    			cout<< "Du bist seit " << alter-18 <<" Jahren volljährig.";
    		break;
    
    		default:
    			cout<< "Okay, keine Ahnung, was du eingegeben hast, aber es war falsch...";
    	}
    
    	//Herunterfahren
    	cin.sync() ;
    	cin.get();
    	return 0;
    
    }
    

    LG KeneXXa



  • Das ist das C-Unterforum (nicht C++)

    Alles zwischen ' gilt als Zeichen (Zeichen, nicht Stringliteral)

    switch kann keine Bereiche abfangen. Du musst für jeden einzelenen Wert ein case schreiben.

    Beachte die Warnungen vom Compiler. Wenn du keine bekommst, stelle den Warnlevel schärfer ein.
    Beheb den Grund für die Warnungen.



  • switch-case funktioniert nur bei exakten Werten. Bei deinem Code wirst du es bei if-else-Blöcken belassen müssen.

    Häufig nutzt man switch-case bei Aufzählungen (enum).



  • Ok, vielen Dank! 🙂
    Ich hab nun nochmal einen anderen Code gemacht und es klappt trotzdem nicht. Ich versteh echt nicht, was ich falsch mache.

    #include <iostream>
    
    using namespace std;
    int main (void)
    
    {
    	int Text;
    
    	cin >> Text;
    
    		switch (Text) {
    
    			case'1':
    			cout << "Hi!";
    			break;
    
    			case'2':
    			cout << "Hallo!";
    			break;
    
    		}
    
    }
    


  • '1' ist etwas anderes als 1 (erste ist das Zeichen, letzteres die Zahl).

    PS: Hier ist übrigens das C-Unterforum (nicht C++ ;))



  • KeneXXa schrieb:

    Ich versteh echt nicht, was ich falsch mache.

    Du bedienst dein Programm falsch.

    D.h. du machst falsche Eingaben. Ich weiß nicht was du eingibst, aber es ist falsch.

    Gib zur Probe mal den Inhalt von Text aus (Zeile 11)
    Und wenn du dich über den Wert wunderst, mach dich mal über ASCII schlau.



  • Th69 schrieb:

    '1' ist etwas anderes als 1 (erste ist das Zeichen, letzteres die Zahl).

    PS: Hier ist übrigens das C-Unterforum (nicht C++ ;))

    Danke, das war der Fehler, ich dachte, man müsse diese '' Zeichen machen. Das habe ich wahrscheinlich nur falsch verstanden bei dem tut, das ich mir angesehen habe.

    Und sry, ich werde in zukunft versuchen das richtige Unterforum zu wählen 🙂


Anmelden zum Antworten