1Danke
ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
829
829
EMPFEHLEN
-
Terminiert diese Schleife bei allen int-Eingabewerten?Code :
1 2 3 4 5 6 7 8 9
int a, b; ... // Definition der Inhalte von a und b while (a != b) { if (a > b) a = a - b; else b = b - a; } System.out.println(a);
Meine Annahme: Selbst wenn a=MAX_INTEGER und b=-1 wird aus a durch overflow MIN_INTEGER, der sicherlich wieder bei genügender Addition b=-1 trifft.
Ist a allerdings beliebig ungerade und b beliebig gerade so kann die Schleife nicht terminieren.
Bei beiden Annahmen bin ich mir sehr unsicher wüsste aber nicht wie ich das zeigen kann. Am besten natürlich ohne Beispiel, ganz allgemein.Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!
MfG, Zod
__________________
rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)
-
13.02.09 21:57 #2
Nein, sie beendet nicht, solange beide Zahl negativ sind. Wenn man eine Negative subtrahiert wird sie addiert, wodurch sich b von a wegbewegt.
Wenn man dem Overflow ignoriert und a bspw. "-5" und b -1 ist, tritt die else in Kraft, wodurch b - a ist, also 4, dann 9 usw ist.
Beachtet man den Overflow, wird a zu "-2147483648", welches zu b addiert wird, und dadurch einen Overflow in b auslöst. Danach wird es nocheinmal addiert, wodurch es wieder -1 ist.
-
Diese Schleife terminiert nur für a>0 && b>0 (Überläufe außer acht gelassen).
Die Überlegung ist falsch. Sobald a MIN_INTEGER ist, gilt b > a, also wird die Zuweisung b = b - a; durchgeführt.
Wie kommst du darauf? Für a=1 und b=2 terminiert die Schleife doch beispielsweise.
Für Programm-Verifikation allgemein verwendet man z.B. das wp-Kalkül oder das Hoare-Kalkül.
Grüße, Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
Gut. Danke!
Damit wären die Sachen bei denen ich mir ganz unsicher war auch gegessen.
Demnach terminiert die Schleife unter Berücksichtigung vom Overflow immer.
(Korrigiert mich wenns falsch ist - bin so schon fitter als die Klausur es fordern wird aber liebe halt so besondere Sachen
)
Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!
MfG, Zod
__________________
rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)
-
„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
Grob jeweils Schleifenanfang:
Durchgang 1, a=MAX und b=-1
Durchgang 2, a=MIN und b=-1
Durchgang 3, a=MIN und b=MAX
2, 3 wiederholt sich ab hier
Woah. Ich sollte vielleicht ein bisschen weiterdenken und nicht so vorschnell seien bei meinen Überlegungen.
Sorry, übelst dummer Fehler 
Alles klar. Danach hab ich gesucht
Danke!!
Geändert von ZodiacXP (14.02.09 um 00:22 Uhr)
Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!
MfG, Zod
__________________
rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)
Ähnliche Themen
-
einige PDFs und EXE-Dateien lassen sich nach einiger Zeit nicht mehr öffnen
Von willeswissen im Forum Microsoft WindowsAntworten: 0Letzter Beitrag: 05.10.10, 08:18 -
[C]Arrays von Strukturen terminieren!
Von Bexx im Forum C/C++Antworten: 2Letzter Beitrag: 04.03.09, 15:11 -
Nach Import lassen sich Objekte nicht mehr texturieren....
Von smo83 im Forum 3D Studio MaxAntworten: 1Letzter Beitrag: 29.05.08, 15:53 -
LoadVars.onLoad in for-schleife wird erst nach Schleife abgearbeitet?
Von Lloyd im Forum Flash PlattformAntworten: 12Letzter Beitrag: 17.01.05, 18:34 -
[nach formatierung] anzeige optionen lassen sich nicht öffnen
Von openeye im Forum Microsoft WindowsAntworten: 0Letzter Beitrag: 15.04.04, 22:39





Zitieren

Login





