"Wer wird Millionär" esle if-Problem
-
Also das "Programm" an sich ist sehr simpel und dient nur zu Übungszwecken, da programmieren totales Neuland für mich ist.
Wenn man die richtige Antwort gibt soll mit der if-verzweigung einfach ausgegeben werden das die Antwort richtig ist. Das klappt auch.
Das Problem ist bei "else". Else sollte eigentlcih dazu dienen alle "ungültigen" Eingaben, also alles ausser "a,b,c,d" (die möglichen Antworten) mit der Ausgabe "ungültige eingabe" zu beantworten. Aber anstatt dies zu tun kommt weiterhin die Ausgabe von der "else if"-verzweigung ("Die Antwort ist leider falsch!").
Wieso?
Ich konnte das Problem slebst schon umgehen, indem cih einfach mit einer switch-verzweigung gearbeitet habe, dennoch würde ich gern wissen, wieso es nciht mit der "if, else if und else-" verzweigung funktioniert.
#include "stdafx.h" #include "iostream" #include "windows.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int nPunktestand = 0; int nPunkte; char chAntwort; cout<<"Wer wird Millionaer?\n\n"; cout<<"1) Peter Kreuder komponierte 1936 den Schlager ""Ich wollt' ich wär' ein ...""?\n" <<"a) Hund b) Huhn\n" <<"c) Hummer d) Huflattich\n"; cin>>chAntwort; getchar(); if (chAntwort == 'b') { cout<<"Das ist korrekt!" <<"Sie haben " <<nPunktestand+50 <<" Euro gewonnen!" <<endl; } else if (chAntwort == 'a' || 'c' || 'd') { cout<<"Die Antwort ist leider falsch! " <<"Sie fallen auf 0 Euro zurueck." <<endl; } else { cout<<"Ungueltige Eingabe"; } getchar(); return 0; }
-
Du kannst nicht mehrere Werte in einen Vergleich reinpacken - das geht zwar syntaktisch, bringt aber nur Müll. Du mußt schon jeden Wert einzeln vergleichen:
else if (chAntwort == 'a' || chAntwort == 'c' || chAntwort == 'd') { cout<<"Die Antwort ist leider falsch! " <<"Sie fallen auf 0 Euro zurueck." <<endl; } //oder anders :D else if( strchr("acd",chAntwort) ) ...
-
Aha.
Okay naja dann ist es ja gar nicht so ein schwerwiegender Fehler.Danke dir!

Mal nebenbei gefragt:
Ist es sinnvoller hier die if-else verzweigung zu wählen oder ist switch besser?
oder etwas ganz anderes?
-
Da kann man nicht so pauschal beantworten, weil es von zu vielen Bedingungen abhängt. In deinem einfachen Beispiel wäre ein switch sicher kompakter, aber schon bei der nächsten Stufe des Programms (die Fragen- und Antworten-Kombinationen flexibler anpssen zu können) kommst du mit switch nicht mehr weiter.
-
CStoll schrieb:
Da kann man nicht so pauschal beantworten, weil es von zu vielen Bedingungen abhängt. In deinem einfachen Beispiel wäre ein switch sicher kompakter, aber schon bei der nächsten Stufe des Programms (die Fragen- und Antworten-Kombinationen flexibler anpssen zu können) kommst du mit switch nicht mehr weiter.
Okay und wie sieht es aus mit switch und if kombinieren?
Ist sowas üblcih oder macht man entweder eins oder das Andere?
-
gabbas1 schrieb:
CStoll schrieb:
Da kann man nicht so pauschal beantworten, weil es von zu vielen Bedingungen abhängt. In deinem einfachen Beispiel wäre ein switch sicher kompakter, aber schon bei der nächsten Stufe des Programms (die Fragen- und Antworten-Kombinationen flexibler anpssen zu können) kommst du mit switch nicht mehr weiter.
Okay und wie sieht es aus mit switch und if kombinieren?
Ist sowas üblcih oder macht man entweder eins oder das Andere?Auch das kann man nicht pauschal beantworten
Es kommt einfach auf die Menge drauf an und was du überhaupt vorhast. Prinzipiell sind alle möglichen Kombinationen möglich, aber wie gesagt pauschal kann man das nicht beantworten.Lg freeG
-
Also ich habe durchaus schon if und switch miteinander verschachtelt, z.B. in der Form:
switch(taste) { case F2: ... case F3: ... ... case F12: if(daten_ok()) gehe_weiter(); break; default: ... }(stark vereinfacht und übersetzt in C++ Syntax)
An welche Art von Kombination hast du denn gedacht?
-
Vielen Dank für eure Antworten!
Also bei meinem "wer wird Millionär Billigabklatsch" werd ich so eine Verbindung von if und switch nciht brauchen und auch nicht nehemen. Ich wollte eher nur mal allgemein wissen, ob das so machbar und/oder üblich ist.