H
burnner schrieb:
Aber !Done brauchts 100% ohne das wird es nicht gehen.
Ach so? Na dann erklär mal.
Ich sehe das so:
* Du hast zwei lokale boolesche-Variablen found und done, die beide mit false initialisiert werden.
* Der erste Block wird betreten, wenn found == true und done == false. Von der Ausgangssituation betrachtet fehlt also ein found = true. Merken wir uns.
* Der zweite Block wird betreten, wenn found == false und done == false. Von der Ausgangssituation betrachtet fehlt also nix. Der zweite Block wird auf jeden Fall im ersten Durchlauf betreten.
* done wird nur an einer Stelle verändert. Nämlich im ersten Block. Dort wird es auf true gesetzt. Minimale Bedingung von der Ausgangssituation: found = true.
* Wie kriegen wir found auf true? Nur im zweiten Block.
Minimale Bedingung von der Ausgangsituation. Keine.
Schauen wir uns also alle möglichen Kombinationen an:
found, done:
false, false: Möglich: -> Zweiter Block wird betreten, erster nicht
false, true: Unmöglich: -> done kann nur im ersten Block auf true gesetzt werden. Dazu ist aber found == true nötig.
true, fals: Möglich -> Zweiter Block wird nicht betreten, erster ja
true, true: Möglich -> Zweiter Block wird nicht betreten, erster nicht.
So. Wie du feststellen solltest, ist die Prüfung auf !done für den zweiten Block unnötig.
Aber warum verschwende ich eigentlich meine Zeit für jemanden der scheinbar sowieso völlig kritikunfähig ist???
Naja, hilf dir am Besten selbst.