do while Schleife, verknüpfte Bedingung geht nicht

OP #2340827
Lesenswert?

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));
OP #2340836
Lesenswert?

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.
Gast #2340846
Lesenswert?

> 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
OP #2340855
Lesenswert?

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.
OP #2340878
Lesenswert?

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.
Gast #2340919
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren