warum funktioniert es nicht "blöde Frage "



  • #include<iostream.h>
    int fkt(int );
    int main()
    {
    	int b=0;
    	fkt(b);
    	cout << " b ist also :" << fkt(b);
    	return 0;
    
    }
    int fkt(int y)
    {
    	int x,y1=0,y2=1;
    	for(x=1;x<=20;x++)
    	{
    		y = y1+y2;
    		y1=y2;
    		y2=y;
    	}
    		return y1;
    }
    


  • soll das programm die ersten 20 fibonacci-zahlen anzeigen?



  • ja



  • galilio schrieb:

    ja

    sieh, wie du y in der Funktion fkt behandelst.
    Dabei, kann dein Kode nur die einzige Zahl ausdruecken.



  • galilio schrieb:

    ja

    dann hast da nen haufen fehler.

    #include<iostream.h> 
    int fkt(int ); 
    int main() 
    { 
        int b=0;//ok, ich merke mir, b ist 0
        fkt(b);//der aufruf tut nix wirksames für die main(). 
           //er berechnet zwar was, aber tut nix mit dmem ergebnis.
        cout << " b ist also :" << fkt(b);//berechnet fkt(b) und zeigt es an.
           //also fkt(0).
        return 0; 
    }
    

    war nicht das gesuchte. es sollten doch alle 20 zahlen angezeigt werden.
    dazu muß ne schleife her, um was 20-mal zu machen.

    #include<iostream.h> 
    int fkt(int); 
    int main() 
    {
        int b;//ich lege mal b an
        for(b=1;b<=20;b=b+1)//lass b von 1 bis 20 laufen
        {
           cout<<"fkt("<<b<<")="<<fkt(b)<<endl;
           //oder einfacher erstmal
           //vout<<b<<" "<<fkt(b)<<endl;//gib b und fkt(b) aus
        }
        return 0; 
    }
    
    int fkt(int y) 
    { 
        int x,y1=0,y2=1; 
        for(x=1;x<=20;x++)//die läuft ja immer von 1 bis 20. sollte die nicht 
           //nur bis y laufen?
        { 
            y = y1+y2; //dann nicht hier y nehmen. einfach ne neue namens tmp
               //machen.
            y1=y2; 
            y2=y; 
        } 
        return y1; 
    }
    
    int fkt(int y) 
    { 
        int x,y1=0,y2=1; 
        for(x=1;x<=y;x++)//jetzt geht sie von 1 biy y, läuft also y-mal.
        { 
            int tmp;
            tmp = y1+y2;
            y1=y2; 
            y2=y; 
        } 
        return y1; 
    }
    

Anmelden zum Antworten