Forum: Compiler & IDEs c++/klausuraufgabe


von star:) (Gast)


Lesenswert?

ich verstehe hier die ausgabe nicht :
hat jemand nen Plan?
1
#include <iostream>
2
using namespace std;
3
int f1(int a);
4
int f2(int a);
5
6
int main()
7
{
8
    int a=0;
9
    int b=1;
10
    for(int count =-10;count<=0;++count)
11
    {
12
        b+=f1(a)+f2(a);
13
        cout<<b<<endl;
14
    }
15
    return 0;
16
}
17
18
int f1(int a)
19
{
20
    int b;
21
    b=f2(a);
22
    return (b);
23
}
24
25
int f2(int a)
26
{
27
    static int b=-5;
28
    b+=1;
29
    return (b+a);
30
}



Ausgabe lautet:


-6
 -9
 -8
 -3
 6
 19
 36
 57
 82
 111
 144

: Bearbeitet durch User
von de (Gast)


Lesenswert?

warum erstellst du dir nicht schnell ein Projekt mit Editor deiner Wahl 
und debuggst es durch, daneben zettel+stift und mitdenken, und schon ist 
diese Aufgabe auch nicht mehr schwierig?!

von S_Hennig (Gast)


Lesenswert?

Skizziere Dir zuerst, wer wen aufruft. (main->f1->f2).

Dann schreib Dir für jede Aufrufebene auf, welche lokalen (und globalen) 
Variablen es darin gibt, und welche Werte diese haben.
Dann musst Du noch wissen, dass lokale Variablen mit dem Schlüsselwort 
"static" ihren Wert zwischen den Aufrufen behalten und alles wird Dir 
klar werden.

Ist wirklich einfach, nur mit Absicht etwas verwirrend geschrieben.

Grüße,
 Stefan

von Karl H. (kbuchegg)


Lesenswert?

ergänzend:

Es ist auch nicht verboten, sich zum Verstehen eines Codes zusätzliche 
Ausgabeanweisungen ins Programm einzubauen.

zb
1
    for(int count =-10;count<=0;++count)
2
    {
3
        cout << "Berechnung fuer " << count << endl;
4
        b+=f1(a)+f2(a);
5
...
6
7
int f1(int a)
8
{
9
    int b;
10
11
    cout << "f1 aufgerufen mit " << a << endl;
12
    b=f2(a);
13
    cout << "Ergebnis für f1 " << b << endl;
14
    return (b);
15
}
16
17
int f2(int a)
18
{
19
    static int b=-5;
20
21
    cout << "f2 aufgerufen mit " << a << endl;
22
    cout << "b hat aktuell den Wert " << b << endl;
23
...

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.