übungsquellcode
-
die formatierung von HorrySheet ist das richtige
-
MFK schrieb:
daddy_felix schrieb:
irgendwo hast du dich vertippt:
Nö. Das ist einfach nur ein bißchen fies.
weißt du 100%, dass es kein Vertipper ist? Klar schluckt der Compiler das so, aber ich hätte nicht vermutet, dass das Absicht ist.
-
habe mich 100% nicht vertippt hab eben das in den compiler geworfen gibt dies aus:
9 25 57 121 249
-
Du solltest dich als erstes dem Thema "Funktionen" widmen. Was ist eine Deklaration, was ist eine Definition, wie wird eine Funktion aufgerufen?
Als nächstes wäre dann das Thema "Lebensdauer von Variablen" dran. Sehr wichtig in dem Zusammenhang auch "Überdeckung globaler Variablen durch lokale Variablen".
-
ich habe es ja nicht verstanden habe 2 literaturen.
kann aber nicht ganz nachvollziehen was das programm macht.
-
S.lukas schrieb:
kann aber nicht ganz nachvollziehen was das programm macht.
Das ist bei deinen Wissenslücken auch kein Wunder. Daher solltest du dir erstmal in Ruhe die angegebenen Themen ansehen, bevor du dich an den Übungscode setzt. Der beinhaltet nämlich ziemlich viele kleine Fallen, das ist momentan einfach noch zu kompliziert für dich.
-
habe nächste woche mittwoch meinen 2. versuch (klausur).
ich versuch so schnell wie möglich an die infos dran zu kommen um das alles nachfolziehen zu können und somit auch nach lesen werde.
-
S.lukas schrieb:
habe nächste woche mittwoch meinen 2. versuch (klausur).
ich versuch so schnell wie möglich an die infos dran zu kommen um das alles nachfolziehen zu können und somit auch nach lesen werde.Welche Entwicklungsumgebung nutzt du eigentlich? Visual Studio Express?
-
ja
-
Was verstehst Du denn an dem Programm nicht? Gehen wir es mal gemeinsam durch:
#include <iostream> using namespace std; int a=0, b=1; //zwei Variablen, die mit einem Wert initilisiert werden int f1(int a);//Deklaration einer Funktionen int f2(int b);//Deklaration einer anderen funktion int main() //Hier fängt dein Programm logisch an! { int count; for (count=1;count<=5;++count) //eine Schleife, die von 1 bis einschließlich 5 zählt { b+=f1(a+1)+1; /* 1. a = 0; f1(a+1)+1 = f1(1)+1 = f2(1+1)+1+1 = f2(2)+1+1 = 5 2. //... */ cout << b << " "; //Ausgabe von b } } int f1(int a) //Definition der Funktion f1 { b = f2(a+1)+1; return (b); } int f2(int a) //Definition der Funktion f2 { return (b+a); }
-
{ b+=f1(a+1)+1; //b=b+f1(0+1)+1 das hab ich verstanden dann wird f1 aufgerufen was passiert da ? cout << b << " "; //Ausgabe von b } } int f1(int a) //Definition der Funktion f1 { b = f2(a+1)+1; return (b); } int f2(int a) //Definition der Funktion f2 { return (b+a); }
-
Wenn f1 aufgerufen wird, passiert das:
int f1(int a) //Definition der Funktion f1 { b = f2(a+1)+1; return (b); }Ersetze also den Funktionsaufruf f1 durch die Rechenoperationen, die f1 ausführt. Das ist in diesem Falle f2(a+1)+1.
Klar?
-
int main() //Hier fängt dein Programm logisch an! { int count; for (count=1;count<=5;++count) //eine Schleife, die von 1 bis einschließlich 5 zählt { b+=f1(a+1)+1; //gibt es (0+1)+1 also 2 in die funktion f1? cout << b << " "; //Ausgabe von b } } int f1(int a) //Definition der Funktion f1 { b = f2(a+1)+1; //und hier kommt dann (2+1)+1? 4 dies wird an f2 gegeben? return (b); } int f2(int a) //Definition der Funktion f2 { return (b+a); //(1+4)=5 und jetzt? }
-
S.lukas schrieb:
int main() //Hier fängt dein Programm logisch an! { int count; for (count=1;count<=5;++count) //eine Schleife, die von 1 bis einschließlich 5 zählt { b+=f1(a+1)+1; //gibt es (0+1)+1 also 2 in die funktion f1? -> Nein, es wird a+1 an die Funktion f1 übergeben, also 1 cout << b << " "; //Ausgabe von b } } int f1(int a) //Definition der Funktion f1 { b = f2(a+1)+1; //und hier kommt dann (2+1)+1? 4 dies wird an f2 gegeben? --> Nein, es wird all das, was in den Klammern steht, an die Funktion übergeben return (b); } int f2(int a) //Definition der Funktion f2 { return (b+a); //(1+4)=5 und jetzt? --> Das wird an die Stelle zurückgegeben, von der Du f2 aufgerufen hast. Dort steht f2(...). Dafür setzt Du jetzt den hier berechneten Ausdruck ein }Viele Grüße
freakC++
-
yeah habe es jetzt verstanden jetzt
-

-
komme aber nicht auf die
9 25 57 121 249
-
#include <iostream> using namespace std; int a=0, b=1; int f1(int a); int f2(int b); int main() { int count; for (count=1;count<=5;++count) { b+=f1(a+1)+1; cout << b << " "; } } int f1(int a) { b = f2(a+1)+1; return (b); } int f2(int a) { return (b+a); }Am einfachsten (im Kopf) ist es, wenn man das Ganze gedanklich umschreibt. Erstmal verwenden wir nicht die gleichen Bezeichner mehrfach:
int a=0, b=1; int f1(int x); int f2(int y); int main() { int count; for (count=1;count<=5;++count) { b+=f1(a+1)+1; cout << b << " "; } } int f1(int x) { b = f2(x+1)+1; return (b); } int f2(int y) { return (b+y); }Man sieht dass sich der Wert von a nie ändert. Also wird f1 immer mit dem Wert 0+1=1 aufgerufen. f2 wird somit immer mit dem Wert 1+1=2 aufgerufen, also können die Parameter auch eliminiert werden:
int a=0, b=1; int f1(); int f2(); int main() { int count; for (count=1;count<=5;++count) { b+=f1()+1; cout << b << " "; } } int f1() { b = f2()+1; return (b); } int f2() { return (b+2); }Einsetzen von f2 in f1 ergibt:
int f1(int x) { b = b+2+1; // b+=3; return (b); }Einsetzen von f1 in main ergibt:
int main() { int count; for (count=1;count<=5;++count) { b+=3; b+=b+1; cout << b << " "; } }also
int main() { int count; for (count=1;count<=5;++count) { b=2*b+7; cout << b << " "; } }was ohne weiteres nachvollziehbar sein sollte.
-
vielen dank für die übersichtliche information.
-
camper schrieb:
int b=1; int main(){ // ... b+=f1(a+1)+1; //... } int f1(int a){ b = f2(a+1)+1; return (b); }Ich habe den Standard vor mir. Allein mein Standardsprech reicht nicht

Das hat alles eine definierte Abfolge, die ich nur nicht aus 1.9/13ff herauslesen kann?!