weitergeben von numerischen Ergebnissen



  • Nabend oder besser Morgen,

    ich habe folgendes Problem.
    Ich habe in langwieriger Arbeit ein Programm zur berechnung einer redundanten, inversen Roboterkinematik geschrieben. Ich habe jetzt nur noch (hoffentlich) ein letztes Problem zu lösen. Folgendes:

    Ich habe eine main (logisch oder 😃 ) die nach der Eingabe von 22 verschiedenen Daten 5 nacheinader erforderliche Funktionen (die mit void definiert sind) aufruft. Jedoch werden zuerst die 22 Daten in 3 Vectoren unterteielt. Diese Vectoren lasse ich jeweils per Referenz aufrufen. In meiner letzten Funktion bekomme ich 8 Werte die ich quasi gerne wieder an meine main übergeben würde, da genau diese 8 Werte ein Teil der 22 Ausgangswerte da stellt. MEIN PROBLEM. WIE???.

    Ich habe schon versucht in meiner Unterfunktion (void End (&ref auf vec)) einen Vector zu beschreiben den ich GLobal definiert habe. Geht nicht warum auch immer......

    Dan habe ich mir überlegt einen 2 Vector in meiner Main zu definieren und und quasi meinen Vector aus meiner Unterfunktion da rein zu kopieren.. geht ja logischer weise auch nicht. Meine letzte Idee war einfach eine Ref von meinem 2 Vector in meiner Main auf den Vector in meiner Unterfunktion zu legen und so an die Werte ran zu kommen, alleridngs stell ich mich dafür zu glatt an. Syntaxtechnisch und ich denke mal die gesamte technische Umsetzung.

    Was habt Ihr noch für Lösungen?

    War das Problem Verständlich? Wenn nicht, dann erstell ich mit DIA mal ne Mindmap dann wirds vielleicht verständlicher.

    Vielen Dank im Voraus

    M.f.G



  • hey!

    Deine Ansätze die du beschreibst, sind doch eigentlich richtig... Wie sieht das dann als code bei dir aus? folgendes wäre zB möglich:

    void End(std::vector<float>& ausgabe)
    {
      // irgendwelche Berechnungen
      ausgabe.push_back(612.98f);
      ausgabe.push_back(7665.8f);
      return;
    }
    
    int main()
    {
      std::vector ausgabewerte;
      End(ausgabewerte);
    
      // in ausgabewerte stehen jetzt die beiden oberen Zahlen drin
    }
    


  • Also wenn ich das richtig verstehe, willst du versuchen 8 Werte zurückzugeben, ist das richtig? Wenn ja, das ist in C++ mit nativen Mitteln nicht möglich, da musst du dir mit einer Klasse oder einem Struct behilflich sein.
    Kleines Beispiel:

    #include<iostream>
    
    struct Help
    {
       int wert1;
       int wert2;
       int wert3;
    };
    
    Help funktion(Help deinHelp)
    {
        deinHelp.wert1=100;
        deinHelp.wert2=200;
        deinHelp.wert3=300;
    
        return deinHelp; //zwar kein Schöner Stil, sollte man über eine Referenz lösen, aber zu testzwecken ok.
    }
    
    int main()
    {
        Help testhelp;
    
        testhelp = funktion(testhelp);
    
        std::cout<<testhelp.wert1<<std::endl;
        std::cout<<testhelp.wert2<<std::endl;
        std::cout<<testhelp.wert3<<std::endl;
    }
    

    Dran denken, bei der rückgabe von mehreren Werten immer Hilfklassen oder Strukturen bauen.



  • Firefighter schrieb:

    Dran denken, bei der rückgabe von mehreren Werten immer Hilfklassen oder Strukturen bauen.

    Oder wenn die Werte vom selben Typ sind, bietet es sich an, Container (wie std::vector ) zurückzugeben.



  • Stimmt...daran habe ich sofort gar nicht gedacht.Danke für die Ergänzung.


Anmelden zum Antworten