Merkwürdige Fehlermeldung



  • Danke erstmal für die Antworten, ich werd mir dazu nochmal gezielt Gedanken machen.
    Das war ja eben meine Frage,wie kann ich die Parameter einer Funktion in die nächste Funtion übernehmen?Eben das ist sowas, was ich im Buch nicht finde.Ich will ja auch nicht Programmierer werden,ich brauch diese Vorlesung für mein Studium der physikalischen Technik. Bin beim Programmieren ne totale Niete.....
    Wie sieht denn so eine Übergabe Codetechnisch aus?Also ich habe ne Funktion,die mir zwei Werte berechnet.Diese Werte möchte ich mit einer anderen Funktion ausgeben......



  • Die Parameter kannst du innerhalb der Funktion wie ganz normale Variablen nutzen. Also kannst du sie auch an andere Funktionen weitergeben.

    void func1(int a)
    {
    
    }
    
    void func2(int a, int b)
    {
        func1(a); // weitergeben an andere Funktion
    }
    


  • Aha, dann muss ich also nur die eine Funktion innerhalb der anderen aufrufen?Das geht auch,wenn die Funktion mehr als einen Rückgabewert hat?In dem Fall die beiden Lösungen der quadratischen Gleichung? Soviel ich gelesen habe, gibt die Returnanweisung immer den Rückgabewert.Aber eben nur einen hab ich gelesen. Na ich werd das mal ausprobieren, werde mal die berechnen Funktion in der Ausgeben Funktion aufrufen.Danke für den Tip.



  • nicobaerli schrieb:

    Aha, dann muss ich also nur die eine Funktion innerhalb der anderen aufrufen?

    Genau.

    nicobaerli schrieb:

    Das geht auch,wenn die Funktion mehr als einen Rückgabewert hat?In dem Fall die beiden Lösungen der quadratischen Gleichung?

    Rückgabewert kann eine Funktion höchstens einen haben. Das andere sind Parameter, die auch verwendet werden können, um Information von der Funktion an den Aufrufer zurückzugeben (mittels Zeiger oder Referenzen).

    nicobaerli schrieb:

    Soviel ich gelesen habe, gibt die Returnanweisung immer den Rückgabewert.Aber eben nur einen hab ich gelesen.

    Ja, mit return wird die Funktion beendet und der angegebene Wert zurückgegeben. Du musst aber wie gesagt zwischen Parametern und Rückgabewert unterscheiden.



  • Also das probier ich gleich morgen mal.Dachte mir schon,dass die Zeiger zu was gut sind.Ich hab auch das Prinzip der Zeiger verstanden glaube ich, nur hab ich immer Probleme, das in den Code umzusetzen.Aber gleich morgen,mach ich mich ran an die Problematik...danke für die Ratschläge....



  • Nexus schrieb:

    nicobaerli schrieb:

    Das geht auch,wenn die Funktion mehr als einen Rückgabewert hat?In dem Fall die beiden Lösungen der quadratischen Gleichung?

    Rückgabewert kann eine Funktion höchstens einen haben. Das andere sind Parameter, die auch verwendet werden können, um Information von der Funktion an den Aufrufer zurückzugeben (mittels Zeiger oder Referenzen).

    Mehrere Rückgabewerte kannst du entweder über Zeiger/Referenzen lösen, wie Nexus gesagt hat, oder aber auch über eine selbstdefinierte Struktur, die soviele Member hat, wie du brauchst.

    struct myStruct {
    	int WertA;
    	int WertB;
    };
    
    myStruct myFunc() {
    	myStruct x;
    	x.WertA=1;
    	x.WertB=2;
    	return x;
    }
    


  • std::pair (bei nur zwei Werten) und boost::tuple sind auch noch Möglichkeiten.



  • Hy, danke sehr,ich habe mein programm erstmal zum laufen gebracht. Hier ist es:

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    double x, y, z, erg1, erg2;
    double printGl(double a,double b,double c);
    double berechne(double, double, double,double*, double *);
    
    int main()
    {
        cout<<"a= "<<endl;
        cin>>x;
        cout<<"b= "<<endl;
        cin>>y;
        cout<<"c= "<<endl;
        cin>>z;
    	printGl(x,y,z);
    
        system("pause");
    }
    double berechne(double a, double b, double c,double *ptr1,double *ptr2)
    {   
    
        double disk= sqrt(b*b-4*a*c);
        *ptr1= (-b+disk)/(2*a);    
        *ptr2= (-b-disk)/(2*a); 
    
        return 0;
    }
    
    double printGl(double a, double b, double c)
    {   double x1=0.0, x2=0.0;
    	berechne(a,b,c,&x1,&x2);
        cout << "a = " << a << " b= " << b << " c= " << c << endl;
        cout << "Die Loesungen heißen : " << endl;
        cout << "x1 = " << x1 << endl;
        cout << "x2 = " << x2<< endl;
        return 0;
    }
    

    allerdings habe ich hier den pointer gar nicht erst auf ne Variable zeigen lassen. Wieso geht das,wenn ich das doch aber erst machen müsste?
    Nun muss ich nur noch das Lösbarkeitskriterium einbringen,das ist aber net so schwer.
    Das mit der Struktur werd ich mir gleich mal anschauen,und die beiden anderen Befehle,muss ich mal probieren.Danke für die Hilfe.So lernt man mehr,als durch Bücher....



  • nicobaerli schrieb:

    allerdings habe ich hier den pointer gar nicht erst auf ne Variable zeigen lassen. Wieso geht das,wenn ich das doch aber erst machen müsste?

    😕

    Wieso? Machst du doch!Du übergibst an die Funktion die Adressen von Variablen, die den Pointern dadurch zugewiesen werden.



  • ach hier:

    nicobaerli schrieb:

    berechne(a,b,c,&x1,&x2);
    

    stimmt und x1,x2 hab ich deklariert und definiert 🙂
    Also so langsam machts klick, muss noch bissi üben....


Anmelden zum Antworten