
StefMa
Dauer-User
- 450
Hi,
ich habe mir eben mal "größter Gemeinsamer Nenner" programmiert.
Dabei bin ich auf irgendwas "mysteriöses" gestoßen, was ich irgendwie nicht ganz kapiere...
Zuerst mal erkläre ich es anhang eines normalen Beispieles (eine Zahl wird runtergezählt). Der Code ist hier: https://gist.github.com/anonymous/3ea0a7d4562dda944702
Zuerst wird 12 auf beiden Variablen gesetzt.
In der ersten do...while() werden beide Zahlen verringert und abgefragt mit:
Heißt, solange bis BEIDE integer-werte 0 sind, wird die schleife durchlaufen. Funktioniert!
In der zweiten do..while habe ich den selben code. Wieder sind beide Zahlen zwölf. Die while fragt nach:
Ist ja auch laut De Morgans Gesetz das gleiche!
Diese while funktioniert auch GENAU gleich. Ales es ist tatsächlich das gleiche...
Kommen wir zurück zum Gemeinsamen Teiler. Den Code dazu habe ich hier: https://gist.github.com/anonymous/f27eb38314da05154cb8
So wie es ist funktioniert es auch. Die while am ende fragt:
Super, klappt!
Laut dem Gesetz und dem Test von oben, sollte die folgende Abfrage auch funktioniere:
Dies funktioniert aber NICHT!! und bringt mich damit ans ende der verzeiflung!!
Er hört IMMER nach einem durchlauf auf. Wenn ich mir die Zahlen ausgebe kommt immer x == 0 (wenn x > y) bzw y == 0 (wenn y > x) raus, und die andere zahl ist != 0. Ergo müsste es nochmal durchlaufen. TUT ES ABER NICHT!!
Stehe ich grade auf dem Schlauch? Oder was ist hier falsch?!
Danke und Gruß
ich habe mir eben mal "größter Gemeinsamer Nenner" programmiert.
Dabei bin ich auf irgendwas "mysteriöses" gestoßen, was ich irgendwie nicht ganz kapiere...
Zuerst mal erkläre ich es anhang eines normalen Beispieles (eine Zahl wird runtergezählt). Der Code ist hier: https://gist.github.com/anonymous/3ea0a7d4562dda944702
Zuerst wird 12 auf beiden Variablen gesetzt.
In der ersten do...while() werden beide Zahlen verringert und abgefragt mit:
Code:
while (x != 0 && y != 0);
In der zweiten do..while habe ich den selben code. Wieder sind beide Zahlen zwölf. Die while fragt nach:
Code:
while (!(x == 0 && y == 0));
Diese while funktioniert auch GENAU gleich. Ales es ist tatsächlich das gleiche...
Kommen wir zurück zum Gemeinsamen Teiler. Den Code dazu habe ich hier: https://gist.github.com/anonymous/f27eb38314da05154cb8
So wie es ist funktioniert es auch. Die while am ende fragt:
Code:
while (!(x == 0 && y == 0));
Laut dem Gesetz und dem Test von oben, sollte die folgende Abfrage auch funktioniere:
Code:
while (x != 0 && y !=0);
Er hört IMMER nach einem durchlauf auf. Wenn ich mir die Zahlen ausgebe kommt immer x == 0 (wenn x > y) bzw y == 0 (wenn y > x) raus, und die andere zahl ist != 0. Ergo müsste es nochmal durchlaufen. TUT ES ABER NICHT!!
Stehe ich grade auf dem Schlauch? Oder was ist hier falsch?!
Danke und Gruß