Hilfe Turbo C++



  • Hallo an alle,

    ich habe folgendes Problem:

    Ich muss eine Aufgabe lösen,die eig.ganz simpelist, mir aber vllt grade deswegen probleme bereitet 😃

    Lösung quadratischer Gleichung x²+px+q=0:
    Die Parameter p und q werden eingelesen und die Lösung ausgegeben.(kein problem)
    Die Lösung soll alle Fälle berügsichtigen und jeweils alle Zahlenwerte beinhalten.(auch komplexe Lösungen wie z.B.x1/2=3.7 +/- 19.3i) 😕

    Da ich nun blutiger Anfänger bin und ich nicht wirklich weiß, wie ich das mache, bitte ich einen von euch mir auf die Sprünge zu helfen. Und bitte keine fiesen Ratschläge oder sonstiges, denn zum fragen sind Foren doch da, oder?

    Ach ja, dazu muss ich noch sagen, dass wir das auf der Kosolenanwendung machen also eig echt ganz easy!

    Liebe Grüße und Danke im Voraus 👍



  • Also die Mathematik ist nicht dein Problem, du weißt nur nicht, wie man das in C++ formuliert?

    Dann mach doch mal folgendes:

    Als erstes musst du dir überlegen, wie du das Ergebnis einer solchen Gleichung speichern willst. Vielleicht in einer einfachen Klasse:

    class EquationResult
    {
      public:  
        EquationResult(double a, double b);  // funktioniert nicht für komplexe Zahlen
    
        std::string ToString() const;  // Ausgabe in der Form "x = a +/- b" 
    
      private:
        double a;
        double b;
    }
    

    Dann schreibst du dir eine dummy-Funktion für das Lösen der Gleichung:

    EquationResult SolveEquation(double p, double q)
    {
      // hier kommt später die Logik zum Lösen der Gleichung rein
      return EquationResult(p, q);
    }
    

    Und damit versuchst du nun, ein Programm zu schreiben mit Eingabe der Werte und Ausgabe der (noch nicht korrekten) Lösung. So kannst du dich erstmal auf die grundlegenden C++Probleme konzentrieren und die eigentliche Logik später einbauen.



  • Du rechnest ganz normal mit der großen Lösungsformel:
    x1,2=(-p+-sqrt(p^2-4aq))/2a

    und überprüfst den Term (p^2-4aq), ob er negativ ist. falls ja, einfach die Regeln der komplexen Zahlen befolgen. Falls nein, sollte es kein Problem sein.

    gruß
    syntax



  • Ok, cool, allerdings haben wir sowas mit "EquationResult" garnicht 😞
    Wir benutzen die Konsolenanwendung mit C ohne + oder ++

    ich nehme an, dass wir das mit float machen sollen... jetzt binn ich völlig durcheinander 😮



  • Also mit einer einfachen if-schleife syntax?



  • Und muss ich das jetzt mit float oder double oder sonst was machen?



  • viola schrieb:

    Und muss ich das jetzt mit float oder double oder sonst was machen?

    Egal.

    viola schrieb:

    Also mit einer einfachen if-schleife syntax?

    Es gibt keine if-Schleifen, sondern nur if-Abfragen, if-Anweisung.

    viola schrieb:

    Wir benutzen die Konsolenanwendung mit C ohne + oder ++

    Also programmierst du in C? 😕



  • ja 😃
    lass mich raten,dann bin ich hier falsch,stimmts?



  • naja, danke für eure Hilfe, ich bekomms trotzdem nicht hin,ich werde einfach den Dozenten fragen...

    Ciaoi



  • viola schrieb:

    Ok, cool, allerdings haben wir sowas mit "EquationResult" garnicht

    Das ist auch eine Klasse, die du selbst schreiben sollst. In C (wo es keine Klassen gibt) nimmst du stattdessen einfach ein struct, ist quasi dasselbe.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • viola schrieb:

    naja, danke für eure Hilfe, ich bekomms trotzdem nicht hin,ich werde einfach den Dozenten fragen...

    Ciaoi

    Das Problem tritt dann auf, wenn der Wert unter der Wurzel negativ ist.
    Das kannst du ja vor dem Wurzelziehen abfragen.
    Der Rest ist nur eine Sache der Ausgabe. Also was du mit dem printf schreibst.

    Du kannst auch noch überprüfen ob die Wurzel Null ergibt. Dann hast du nur eine Nullstelle.

    Und nimm lieber double statt float.


Anmelden zum Antworten