Oder Abfrage als Bedingung in while Schleife
-
Hi,
ich programmiere noch nicht sehr lange, und frage mich daher oft ob das eine oder andere überhaupt funktioniert. Heute ist es die Bedingung für eine Schleife.#include <stdio.h> int main() { char dec; printf("\t\t Autoverleih\n\n"); printf("Wollen Sie ein Auto zurueckgeben oder ausleihen?\n\n Ausleihen : --> a \n Zurueckgeben: --> z \n"); scanf("%c",&dec); if (dec == 'a' || dec == 'z') { printf("\n Abfrage funktioniert"); } while(dec != 'a' || dec != 'z') /*<- Problem*/ { printf("\nSie haben bei der Eingabe einen Fehler gemacht.\nBitte Entscheiden Sie sich jetzt fuer a oder z "); scanf("%c",&dec); } printf("alles wunderbar"); system("PAUSE"); return 0; }
Mein Problem ist, das ich gern ein a oder ein z einlesen würde. Falls ein anderer Buchstabe eingegeben wird soll eine Schleife so lange abfragen bis ein a oder ein z eingegeben wird. Darf man in eine Schleife kein Oder verwenden? Der Ausdruck darüber ist fast gleich, und funktioniert anstandslos. Ich bin etwas ratlos. Ich würde mich sehr freuen wenn mir jemand weiter helfen würde.
Gruß, Philippp
PS: Compiler -> Dev C++ 4.9.9.2
-
Die Negation von A || B ist ¬ A && ¬ B (De Morgan Regel) und nicht ¬ A || ¬ B wie du es hingeschrieben hast.
-
Ich glaub das werd ich mir dann wohl noch mal ansehen müssen. Im Moment will das noch nicht in meinen Kopf das eine Und Verknüpfung das Problem gelöst hat. Ist ja aber auch spät
.
Auf jeden Fall vielen Dank.
Gruß, Philippp
-
Pflip schrieb:
Ich glaub das werd ich mir dann wohl noch mal ansehen müssen. Im Moment will das noch nicht in meinen Kopf das eine Und Verknüpfung das Problem gelöst hat. Ist ja aber auch spät
.
Auf jeden Fall vielen Dank.
Gruß, PhilipppWie supertux schon gesagt hat: De Morgan's Law. So sehen leider die Grundlagen nunmal aus
MfG
-
Pflip schrieb:
Im Moment will das noch nicht in meinen Kopf das eine Und Verknüpfung das Problem gelöst hat.
Könnte noch öfters passieren in Zukunft :p
-
Pflip schrieb:
Im Moment will das noch nicht in meinen Kopf das eine Und Verknüpfung das Problem gelöst hat.
Ist doch nicht soooo schwierig:
dec ist doch IMMER entweder ungleich a ODER ungleich z - d.h. Deine Bedingung ist IMMER erfüllt.
-
Pflip schrieb:
while(dec != 'a' || dec != 'z') /*<- Problem*/ ...
wenn dir 'de morgan' zu blöd ist, könnteste auch das machen
while(!(dec == 'a' || dec == 'z')) /* wie deine erste abfrage, nur mit 'nem 'not' davor */ ...