Frage zum Quellcode
-
Hab nur mal eine Frage: Möchte im Menü alle Buchstaben und Zahlen ausgrenzen ausser p und k damit man halt nur p und k wählen kann! Habe dieses auch mit einer while Schleife gemacht! Nur leider sagt er mir wenn ich p und k eingebe genaiu das selbe nämlich eingabe nicht möglich bitte neu wählen! Aber warum?
#include <iostream> using namespace std; float kwrech(float a) { const float kw = 0.735499; float erg = a * kw; return erg; } float psrech(float a) { const float kw = 0.735499; float erg = a / kw; return erg; } int main() { char pk; float ps; float kw; char jn; do { cout << "\t\t\t*************************" << endl; cout << "\t\t\t* kW-PS Umrechner *" << endl; cout << "\t\t\t*************************" << endl; cout << "\t\t\t:: by A. Maiwald ::" << endl; cout << "\t\t\t-------------------------" << endl; cout << "\n\t\t\tWas m\x94 \bchten Sie umrechnen?\n\n\t\t\t(P)S oder (k)W?: "; cin >> pk; while (toupper(pk) != 'p' || toupper(pk) != 'k') { cout << "\n\t\t\t" << pk << " nicht m\x94glich!\n\t\t\tBitte neue Auswahl treffen: "; cin >> pk; } if (toupper(pk) == 'P') { cout << "\n\n\t\t\t\Bitte PS-Wert eingeben: "; cin >> ps; cout << "\n\n\t\t\t" << ps << " PS entsprechen " << kwrech(ps) << " kW!"; } else { cout << "\n\n\t\t\tBitte kW-Wert eingeben: "; cin >> kw; cout <<"\n\n\t\t\t" << kw << " kW entsprechen " << psrech(kw) << " PS!"; } cout << "\n\n\t\t\t Nochmal rechnen? (j/n): "; cin >> jn; system ("cls"); } while (toupper(jn) == 'J'); cin.get(); return 0; }
-
toupper() wandelt das Zeichen in einen Großbuchstaben um (wer hätte das gedacht), das heißt du mußt auch mit den entsprechenden Großbuchstaben ('P' bzw. 'K') vergleichen und nicht mit den Kleinbuchstaben.
-
while (toupper(pk) != 'p' || toupper(pk) != 'k')Nunja, spontan fallen mir zwei Sachen auf: pk als Grossbuchstabe kann nie 'p' sein, denn das ist ein Kleinbuchstabe. Und wenn (pk nicht 'P' ODER pk nicht 'k') erfüllt ist fallen auch Ostern und Weihnachten auf einen Tag

-
euhm ja aber auch mit K und P gehts nich

-
ahhhhhhhhhhhhhhhh es muss ein UND sein ^^ also quasi &&... ah nu gehts hehe
-
LordJaxom schrieb:
Und wenn (pk nicht 'P' ODER pk nicht 'k') erfüllt ist fallen auch Ostern und Weihnachten auf einen Tag

Stimmt, das kommt auch noch dazu

Oder auf Deutsch: Eine der beiden Teilbedingungen ist definitiv richtig, agal was in pk drinsteht, also ist die Schleifenbedingung (|| = ODER) konstant wahr. Du benötigst eher && (UND) an der Stelle.
oder du drehst die Bedinungen um: "while(!(toupper(pk)=='P'||toupper(pk)=='K'))..."