2017-07-12 3 views
-2

Also lerne ich C++ und ich mache ein Labor, aber ich kann nicht herausfinden, was falsch ist. Also das Labor ist: Wir brauchen eine Zahl, die: größer als oder gleich null und weniger als zehn ist - oder - ihr Wert multipliziert mit 2 ist kleiner als zwanzig und ihr Wert um zwei reduziert ist größer als minus 2 - oder - es Der um eins reduzierte Wert ist größer als eins und sein Wert dividiert durch 2 ist kleiner als zehn - oder - er ist gleich 11. Schreiben Sie die Bedingung ist die von der Sprache C++ akzeptierte Ausdrucksform und weist ihr Ergebnis der Antwortvariablen zu. Das Problem, das ich habe, ist, dass egal was die Eingabe ist, meine Ausgabe immer wahr ist.Logische Daten: Operatoren und Ausdrücke

bool answer; 
int value; 

cout << "Enter a value: "; 

cin >> value; 

if ((10 > value > -1) || ((20 > (value * 2)) && ((value - 2) > -2)) || (((value - 1) > 1) && ((value/2) < 10)) || (value == 11)) 
{ 
    answer = true; 
} 
    else { 
    answer = false; 
    } 
    cout << (answer ? "THAT'S TRUE :)" : "THAT'S NOT TRUE :(") << endl; 
return 0; 
+2

Der Weg, um Probleme wie diese anzugehen, besteht darin, sie in einfachere Teile zu zerlegen und einen Teil nach dem anderen zu machen. Beginnen Sie mit dem Testen, ob der Wert größer oder gleich null und kleiner als zehn ist. Lass das funktionieren. Hinweis: '10> value> -1' funktioniert nicht. –

+0

Danke ich habe es zur Arbeit gebracht. Ich weiß nicht, wie ich das nicht bemerkt habe. : P – user8297610

+0

Sie haben eine Menge unnötiger Klammern in Ihrem Code. Ich weiß, dass einige von ihnen wahrscheinlich sind, weil dein Compiler dir sagt, dass du vielleicht nicht intelligent genug bist, um den Code zu verstehen, den du geschrieben hast, aber es gibt viele, die einfach nicht benötigt werden. Wenn Sie beispielsweise einen Ausdruck wie 'a <10 && 0 <= a' haben, müssen Sie die beiden Unterausdrücke nicht mit Klammern versehen. –

Antwort

1

Operator > Gruppen von links nach rechts, so dass 10 > value > -1 als (10 > value) > -1 geparst wird; Der Ausdruck (10 > value) ergibt entweder true oder false, und beide Optionen und false > -1 werden immer zu true ausgewertet. So wird Ihre komplexe Bedingung (10 > value > -1) || .... immer true (Abkürzung Auswertung) geben.

Schreiben Sie stattdessen (10 > value && value > -1).

Verwandte Themen