Antworten auf deine Fragen:
Neues Thema erstellen

Hilfe in C++

Lederstrumpf

Noch nicht viel geschrieben

Hallo zusammen,
da ich kein geeignetes Unterforum gefunden habe stelle ich meine Frage jetzt einfach mal hier und hoffe auf eine Antwort.

Ich habe eine Aufgabe aus der Informatik, verstehe jedoch nicht so wirklich was hier passiert.

einmal der Code im ganzen. Und unten mit meinen Kommentaren.

Code:
6. Welche Ausgabe erzeugt das Hauptprogramm main auf dem Bildschirm? #include <iostream>
  using namespace std;
  int f(int a, int b) {
    if (b-a <= 1) {
      return b-a;
    } else {
      int c = (a+b) / 2;
      return 1 + f(a,c) + f(c,b);
    }
}
  int main() {
    cout << f(2,5) << endl;
    return 0;
}
(a) 7 (b) 5 (c) 3 (d) 0


Jetzt der Code mit meinen Kommentaren.


Code:
#include <stdlib.h>

#include <iostream>


  using namespace std;


  int f(int a, int b) {
    if (b-a <= 1) {
      return b-a;
    } else {
      int c = (a+b) / 2;
      return 1 + f(a,c) + f(c,b);
    }

Hier wird ja eine Funktionsvorschrift ausgeführt die in der main aufgerufen wird.

Ich verstehe jedoch nicht, was nach dem return in der else-Funktion passiert.

Code:
}
  int main() {
    cout << f(2,5) << endl;
    return 0;
}


Ich hoffe mir kann jemand helfen. Wenn ich hier im falschen Bereich gelandet bin kann es gerne verschoben werden.

Vielen Dank schonmal

;)
 
Zuletzt bearbeitet:

Robbyn-

PHP / Flex Programmierer

AW: Hilfe in C++

Er gibt dir einen Integer Wert zurück, du rufst ja mit

Code:
cout << f(2,5) << endl;

die Funktion "f" auf. Dieser Funktion übergibst du 2 Parameter einmal die 2 und einmal die 5. So dann wird überprüft:

Code:
 if (b-a <= 1) {
      return b-a;
    }

Wenn 5-2 kleiner-oder gleich 1 ist dann gibt 5-2 zurück

Code:
else {
      int c = (a+b) / 2;
      return 1 + f(a,c) + f(c,b);
    }

Ist dies nicht der Fall dan erstelle einen weiteren Integer Wert der c heißt. Dieser Wert besteht aus deinen Parametern 2 und 5. So nun zum return Wert.

Bei Return wird die gleiche Funktion in der man sich befindet nochmal aufgerufen.
Im klartext würde das da stehen:

Code:
return 1 + f(2,3) + f(3,5);

letzendlich zurück gegeben wird der Wert: 3 Wenn ich mich nicht verrechnet habe. :)

Was diese Funktion aber letzendlich bewirken soll, weiß ich auch nicht :D
 

Lederstrumpf

Noch nicht viel geschrieben

AW: Hilfe in C++

Danke schonmal für deine Antwort :)

Code:
return 1 + f(2,3) + f(3,5);

letzendlich zurück gegeben wird der Wert: 3 Wenn ich mich nicht verrechnet habe. :)

Was diese Funktion aber letzendlich bewirken soll, weiß ich auch nicht :D

Genau so weit bin ich auch gekommen dann aber nicht weiter.

Im Prinzip gibt er mir ja das

Code:
return 1 + f(2,3) + f(3,5);

in die If-Schleife zurück.

Was ich jetzt nicht weiß ist wie ich damit weiterrechnen soll?????
 

Robbyn-

PHP / Flex Programmierer

AW: Hilfe in C++

Ich verstehe deine Frage nichzt, wie/was willst du weiterrechnen?

Willst du wissen was z.b. bei f(2,3) beim return zurück kommt?
 

Skyclad

Clockwork Doll

Zuletzt bearbeitet:

Skyclad

Clockwork Doll

AW: Hilfe in C++

Ah ok das klingt plausibel, scheint aber offenbar nicht geholfen zu haben wenn die Frage hier im Forum aufkommt :D

Ja, das gute alte Prinzip des "in dieser Hausaufgabe sollst Du das anwenden, was der Lehrer in der letzten Stunde erklaert hat" und der Schueler schaut wie ein Schwein ins Uhrwerk.
 

Lederstrumpf

Noch nicht viel geschrieben

AW: Hilfe in C++

Ich muss kurz anmerken, dass ich Maschinenbau im 1. Semester studiere:uhm:

Indem Du die entsprechenden Rueckgabewerte einsetzt und den Vorgaben des Programmcodes folgst.

Meine Rückgabewerte sind dann doch 1 + f(2,3) + f(3,5); richtig?

Mein Problem ist, dass es jetzt auf einmal zwei Funktionen gibt in denen auch noch ein c gespeichert ist.

Irgendwie will mir nicht einleuchten was ich jetzt im nächsten Schritt zu tun habe.

Eclipse spuckt mir den Wert 5 raus. Nur warum?

Leider werde ich aus meinen Vorlesungsaufzeichnunen auch nicht wirklich schlauer... :'(
 

Robbyn-

PHP / Flex Programmierer

AW: Hilfe in C++

Du nimmst jetzt f(2,3) und gehst das gleich nochmal durch, das ergebniss schreibst du dir z.b. irgendwo auf. Das gleiche machst du dann auch mit f(3,5). Die Ergebnisse multiplizierst du jeweils und rechnest noch + 1 dazu. EDs handelt sich ja um die gleiche Funktion.
 

Lederstrumpf

Noch nicht viel geschrieben

AW: Hilfe in C++

Du nimmst jetzt f(2,3) und gehst das gleich nochmal durch, das ergebniss schreibst du dir z.b. irgendwo auf. Das gleiche machst du dann auch mit f(3,5). Die Ergebnisse multiplizierst du jeweils und rechnest noch + 1 dazu. EDs handelt sich ja um die gleiche Funktion.


Ahh jetzt ist mir wieder klar wie das war.:)

Viele Dank.
Ich hatte vergessen, dass ich die einzelnen Schritte nacheinander ausführen muss.
Ich komme jetzt in meiner Rechnung auch auf 5.

Danke an euch zwei =)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben