Hallo zusammen, könnt ihr mir bitte sagen, warum die while Bedingung nie unwahr wird? und damit die Schleife nie verlassen wird!!! verzichtze ich auf die Oder Verknüpfung und setzte jeweils nur eine der beiden Bedingungen ein, dann wird die SChleife wie gewünscht verlassen. nur wenn ich beide Bedingungen als oder verknüpfe, dann läuft die schleife immer weiter und das will ich leider nicht. Entweder, wenn die Taste 12 gedrückt wird oder mehr als 3 Schleifen durchlaufen wurde, dann höre auf! und das geht nicht Viele Grüße, Matthias. do { keypad_wert=keypad_wert_einlesen(); //Zahlenwert entgegennehmen ... hier steht eigentlich noch mehr Code schleifenzaehler++; } while (!(keypad_wert==12)||(schleifenzaehler<4));
Stelle durch geeeignete Anweisungen fest, was überhaupt eingelesen wird, und prüfe, ob die exit-situation überhaupt erreicht wird. Gruss Robert
R. Freitag schrieb: > Stelle durch geeeignete Anweisungen fest, was überhaupt eingelesen wird, > und prüfe, ob die exit-situation überhaupt erreicht wird. > > Gruss > > Robert Hallo Robert, nehme ich die oder verknüpfung raus und setzte nur eine der Bedingungen ein, dann wird die Exit Bedingung erfüllt!! ich entnehme Deiner Aussage, das die Verknüpfung richtig war. Viele Grüße, Matthias.
Und das heisst im Klartext, dass dein Programmcode das tut, was er soll, aber der Algorithmus die exitcondition nicht erreicht. Gruss Robert
> Entweder, wenn die Taste 12 gedrückt wird oder mehr als 3 Schleifen > durchlaufen wurde, dann höre auf! und das geht nicht Wenn man Dein 'Entweder [..] oder' mal umgangssprachlich auslegt dann meinst Du eigentlich
1 | while ((keypad_wert != 12) && (schleifenzaehler < 4)) |
..was semantisch nicht äquivalent ist zu Deinem Codefragment. HTH
R. Freitag schrieb: > Und das heisst im Klartext, dass dein Programmcode das tut, was er soll, > aber der Algorithmus die exitcondition nicht erreicht. > > Gruss > > Robert Hallo Robert while (!(keypad_wert==12) ); while (schleifenzaehler<4 ); diese einzelnen Bedingungen funktionieren, nur ebend verknüoft leider nicht, woran kann das liegen? while (!(keypad_wert==12)||(schleifenzaehler<4)); viele Grüße, Matthias.
Das liegt möglicherweise an der sehr unerwarteten Positionierung des negierenden Ausrufungszeichens. Lies Dir den Kommentar von "g457" nochmal genau durch.
Rufus Τ. Firefly schrieb: > Das liegt möglicherweise an der sehr unerwarteten Positionierung des > negierenden Ausrufungszeichens. > > Lies Dir den Kommentar von "g457" nochmal genau durch. Hallo, danke, das schaue ich mir morgen noch einmal genauer an. Jetzt würde ich das nicht mehr verstehen. :-) while ((keypad_wert != 12) && (schleifenzaehler < 4)) hier habe ich aber ein Und drin, ob die schleife dann auch verlassen wird, wenn nur eine Bedingung erfüllt ist??? das schaue ich mir morgen an. habs ebend mal eingegeben und es hat funktioniert. habe seine Ausführung vorhin leider übersehen. Morgen shcaue ich mir das nochmal an was bei mir falsch ausgedrückt war. Viele Grüße und noch eine Gute Nacht.
Matthias H. schrieb: > while ((keypad_wert != 12) && (schleifenzaehler < 4)) > > hier habe ich aber ein Und drin, ob die schleife dann auch verlassen > wird, wenn nur eine Bedingung erfüllt ist??? > das schaue ich mir morgen an. Damit wird die Schleife solange durchlaufen wie BEIDE Bedingungen erfüllt sind. Sobald EINE nicht mehr erfüllt ist, wird die Schleife verlassen. > while ((keypad_wert != 12) || (schleifenzaehler < 4)) Damit wird die Schleife solange durchlaufen wie EINE der beiden Bedingungen erfüllt sind. Zum Abbruch der Schleife dürfen BEIDE Bedingungen nicht erfüllt sein.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.