C++ Fragen bräuchte eure Hilfe!

  • 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. :(

    Religion ist ein Glaube,
    Wissenschaft als Teilgebiet ist ein Glaube,
    die Wahrheit liegt in der Gegenwart des Menschen.

  • 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?

    Religion ist ein Glaube,
    Wissenschaft als Teilgebiet ist ein Glaube,
    die Wahrheit liegt in der Gegenwart des Menschen.

  • 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.

  • 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.
    lg


    Zitat von Zentor

    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

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!