inkrement

Status
Nicht offen für weitere Antworten.
K

Kruemel

Gast
Hallo ihr!
Ich habe folgende Aufgabe:

Gegeben ist folgender Teilausschnitt eines Quellcodes:
Code:
for (int i = x ; (i++%9) != 1 ; i = getPi(--i) ) {
//restlicher unwichtiger Code...
}
Die Funktion getPi(int i) gibt die i-te Nachkommastelle von Pi aus
(Pi = 3,141 592 653 589 793 238...), wobei getPi(0) die erste und einzige Vorkommastelle 3
ausgibt.
Legen Sie nun für die Werte x= 7, x= 13 sowie x=16 folgende Tabelle aus, bis die
Schleife jeweils beendet ist.

Jetzt ist die Abbruchbedingung etwas merkwürdig. Wäre es nicht egal, ob da nur i oder i++ steht?? Denn i wird ja erst hinterher erhöht, also nachdem es mit der 1 verglichen wurde, oder? Wenn ja dann brechen alle drei schleifen mit den verschiedenen anfangswerten spätestens nach 2 Durchläufen ab, und das ist etwas komisch!
Kann mir wer helfen??
Grüße[/code]
 

SnooP

Top Contributor
nö... dann rechnest du falsch... hab jetzt nur mal x=7 genommen und bin auf mindestens 6 durchläufe gekommen.... die Abbruchbedingung ergibt sich dann ja aus der Tatsache, dass die nur die 1. und 3. Nachkommastelle von Pi zunächst in Frage kommen, da nur 1 mod 9 = 1 ist... das i++ ist dabei tatsächlich egal und wirkt sich nur auf das getPi aus... wo man i wieder runterzählt...
 
K

Kruemel

Gast
Hier mal mein Denken

1 Schleifendurchlauf
i = 7; i% 9 = 7, wird also nicht abgebrochen; getPi(--i) ist also get Pi an der Stelle 6
i=2; i %9 =2, wird also nicht abgebrochen; getPi(--i) ist also get Pi an der Stelle 1
i =1; i %9 = 1, wird abgebrochen...
Wo bin ich da jetzt falsch??
grup,
Kruemel
 

SnooP

Top Contributor
du hast vergessen i auch zu inkrementen... - zwar gilt: i++%9 == 2 ... dennoch ist i danach 3. Somit liefert getPi(--i) Pi an der Stelle 2!
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben