Ich hätte Fragen bezgl Frage 6 und 10:
http://www.pri.univie.ac.at/~itep/ws0203/t06.pdf
Ich weiss einfach nicht wie sie zu diesen Ergebnissen kommen...
Bei Frage 6 Gruppe 1 versteh ich die For-Anweisung nicht.
Wo ist die Initialisierung und der Testteil?
Bei Gruppe 2 komm ich nicht auf das richtige Ergebnis...
Bei Frage 10 komm ich auch nicht auf den grünen Zweig...
Wozu braucht man die return Anweisungen in den void Funktionen?
Auch hier komm ich nicht auf das richtige Ergebnis.
C++ Fragen bräuchte eure Hilfe!
-
-
ad 6 (1):
Die Initialisierung kann (wie auch die anderen beiden Teile) weggelassen werden. Der Testteil ist a (das entspricht a != 0)ad 6 (2):
Die Schleife macht im Prinzip nichts anderes als die Quersumme des Integers zu berechnen. Die ist wie unschwer zu erkennen 9. Das a wird nie verändert und bleibt daher 234.ad 10:
return statements brauchst du nicht zwingend in einer Funktion, die void zurückgibt. Es erfüllt dann einfach den Zweck, dass die Funktion an dieser Stelle beendet wird und an die Stelle im Programm zurückgesprungen, an der die Funktion aufgerufen wurde. -
Ok, danke!
Hmm, bei bsp 10 komm ich aber immer noch nicht ans richtige Ergebnis...
Kann mir jemand erklären wie das Resultat zustande kommt? :confused:
Also zuerst i=2, Parameterübergabe an int x, 2 ist nicht kleiner 2 daher komm ich zur nächsten Funktion f(x-1), 2 wird ausgegeben....aber es steht nicht einmal ein 2er im Ergebnis...
Wo liegt mein Denkfehler? -
Also was ich auf die schnelle sehe wird bei bsp. 10 - Gruppe1.
Die Funktion zuerst mit 2 aufgerufen, daraus folgt der rekursive Aufruf mit
x-1 also x=1 --> es wird "jetzt" ausgegeben, das return ist dazu da, damit der Teil nach der if - Bedingung nicht ausgeführt wird, sonst hättest eine nette Endlosrekursion.
Also gehen wir um einen Rekursionsschritt zurück, also x=2 und die Ausführung ist vor der Zeile
cout << 2*x; --> 4 wird ausgegeben.
Anschliesend wird das Unterprogram beendet.
Jetzt kommt noch ein Aufruf aus der for - Schleife (i=1) --> im Unterprogram ist die if - Bedingung wahr, es wird ein weiteres mal jetzt ausgegeben und beendet (return).
Bei Gruppe 2 ist es eigentlich genau das selbe Schema, nur das der rekursive Aufruf und damit halt der Programmablauf etwas verschoben ist. -
Ich kapier dafür nicht die Antwort zu Frage 6 von Gruppe 1,
die forschleife wird nicht ausgeführt und daher müsste die Ausgabe doch
0123 sein oder?
mfg Zentor -
natürlich wird die schleife ausgeführt
a hat doch den wert 123, daher ist auch die schliefenabbruchbedingung nicht erfüllt ... das ist erst der fall wenn a nimma positiv ist.
lgZitat von ZentorIch kapier dafür nicht die Antwort zu Frage 6 von Gruppe 1,
die forschleife wird nicht ausgeführt und daher müsste die Ausgabe doch
0123 sein oder?
mfg Zentor -
Oh, ok, denkfehler, hab fälschlicher Weise gedacht
1 = true
alles andere false...
mfg Zentor
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!