Fröhliche Zahl mittels do-while Schleife
-
happy coder schrieb:
Die Zahl hat in Wirklichkeit 977 Ziffern und lautet $$3788\overbrace{999\ldots 9}^{973}$$
Das erscheint mir nicht sehr wahrscheinlich. Quelle?
-
1. http://www.fq.math.ca/Scanned/41-4/grundman.pdf (exakte Zahl auf S. 3)
2. http://www.frejbow.net/tl_files/math/hn.pdf (gibt nur Anzahl Ziffern an)
-
Ich hatte vergessen, das i zurückzusetzen, daher die aufsteigenden Zahlen.
IchMein Computer berechnet gerade n=8, dauert aber noch...
-
Kisu schrieb:
...
Der Code ist Richtig, als Ausgabe erhälst du entweder 1 oder 4.
x ist bei dir nicht richtig initialisiert. Das ist das Einzige was da noch falsch sein kann.
Dein Kommentar "Zehnerstelle", sieht verdächtig aus nach "Hab ich nicht verstanden".
Ich schrieb:
Erklärungen zur inneren Schleife:
x%10 liefert dir immer die Einerstelle einer Zahl. (9876%10=6)
x/10 entfernt immer die Einerstelle einer Zahl, da bei einer integer-division auf die nächst kleinere, ganze Zahl abgerundet wird. (9876/10=987)
-
-
ne hab ich schon verstanden, ich mein das schon damit, schlecht gewählter begriff, ist halt ohne die einerstelle, bei 19, die 1..die beiden Begrifflichkeiten waren nie das problem.
mein problem ist das ich den gesamten code im zusammenhang nicht verstehe...
einzelheiten sind kein problem....ich habs eh aufgegeben..muss es morgen präsentieren und hat kein sinn mehr
..aber danke dass ihr es versucht habt.
-
unsigned int s; // wir brauchen s als temporäre Variable do { // fußgesteuerte Schleife, wird mindestens 1x durchlaufen s=0; // s muss hier auf 0 gesetzt werden, da wir später nur hinzuaddieren // wir nehmen an, i sei 19 do { // s.o. s+=(i%10)*(i%10); // -> s = s + 9*9 im ersten Durchlauf, im zweiten Durchlauf s.u. 1*1 und somit 81+1=82 } while (i/=10); // nach dem ersten Durchgang i=i/10->19/10=1, nach dem zweiten 1/10 = 0-> Abbruch i = s; // i ist wird 82 }while(i!=1 && i!=4); // Bedingung nicht erfüllt, das gleiche Spiel noch einmal, // diesmal nicht mit 19, sondern 82
Daher kommen bei 19 also die Schleifendurchgänge (in der äußeren Schleife) zustande:
19->82->68->100->1
Bei 1 ist die Abbruchbedingung schließlich erfüllt.
-
okay, auch von mir danke soweit!
eine kleine frage hätte ich noch:
wie kriegt man das nun hin, dass zu einer zahl zb: der 10 alle zahlen => 10 geprüft werden ob sie fröhliche zahlen sind? d.h. die 10,9,8,7,6,5,4,3,2,1,0.
eine mammutsaufgabe, der ich nicht herr werde.
-
Togglino schrieb:
wie kriegt man das nun hin, dass zu einer zahl zb: der 10 alle zahlen => 10 geprüft werden ob sie fröhliche zahlen sind? d.h. die 10,9,8,7,6,5,4,3,2,1,0.
Schleife drum?
for(zahl=0;zahl<=10;zahl++) { fröhliche_zahlen(zahl); }
-
Kisu schrieb:
ich habs eh aufgegeben..muss es morgen präsentieren und hat kein sinn mehr
Das ist gut. Du hast auch die Untergrenze unterschritten, wo man noch helfen sollte.
-
Kisu schrieb:
ne hab ich schon verstanden, ich mein das schon damit, schlecht gewählter begriff, ist halt ohne die einerstelle, bei 19, die 1..die beiden Begrifflichkeiten waren nie das problem.
mein problem ist das ich den gesamten code im zusammenhang nicht verstehe...
einzelheiten sind kein problem....ich habs eh aufgegeben..muss es morgen präsentieren und hat kein sinn mehr
..aber danke dass ihr es versucht habt.
Viel Spass beim Tutorium morgen. Ich hab meins auch morgen