quadratische Gleichung was ist hier falsch bitte?



  • @Werner Salomon
    ja d und D sind uterschidlich aber wenn ich 'd' schreibe das program zegt fehler
    double instalirung von var `d`deshalb habe ich verändert
    aber das prog ist falsch wel zeigt nicht die richtige werte
    😕



  • Wenn d die Diskriminante sein soll, dann musst Du sie auch berechnen:

    d = pow(p/2,2)-q;
    

    Erst danach kannst Du Deine Variable D berechnen.
    Mir ist aber nicht klar, wass Du mit D bezwecken willst. Wenn d < 0, dann hast Du keine Nullstellen, wenn d = 0, dann hast Du eine Nullstelle, wenn d > 0, dann hast Du zwei Nullstellen (-p/2 +/- sqrt(d)).
    siehe z.B. http://de.wikipedia.org/wiki/Pq-Formel



  • anddy007 schrieb:

    @Werner Salomon
    ja d und D sind uterschidlich aber wenn ich 'd' schreibe das program zegt fehler
    double instalirung von var `d`deshalb habe ich verändert
    😕

    .. aber das ist doch keine Lösung 🙄 - was soll 'd' den sein? und was willst Du mit

    anddy007 schrieb:

    double D=(pow(p/2,2)-q)>0 ? (-p/2)+d :(-p/2)-d ;
    

    bezwecken?

    Gruß
    Werner



  • #include <cmath>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {/*sowei bin ich aber ich weiß nicht was ich schreiben muss damit ich den 
    determinane werte rechnet 
    D<0,D=0,D>0 */
    
        double p,q,x1,x2,d;//x^2 + px + q  d = diskriminante;
        cout << "p: ";
        cin >> p;
        cout<< "q: ";
        cin >> q;
        double D=(pow(p/2,2)-q)>0 ? -p/2 + sqrt((p/2)*(p/2) - q)  : -p/2 - sqrt((p/2)*(p/2) - q) ;
    
        cout<< "x1: " <<"=" << -p/2 + sqrt((p/2)*(p/2) - q)<< endl; 
        cout<<  "x2: " <<"=" << -p/2 - sqrt((p/2)*(p/2) - q)<<endl; 
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    


  • Hallo Anddy,

    Das Einlesen von 'p' und 'q' war ja Ok

    #include <cmath>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {  
        double p,q; //x^2 + px + q
        cout << "p: ";
        cin >> p;
        cout<< "q: ";
        cin >> q;
    

    Die Parameter (int argc, char *argv[]) kannst Du weglassen, da Du sie nicht benötigst. Als nächstes bestimmst Du die Diskriminante

    double D = (p/2)*(p/2) - q;
    

    und nichts anderes. Dann ist natürlich zu überprüfen, ob dieser Wert >0, ==0 oder <0 ist.
    Du schreibst, dass Du kein if benutzen kannst - solltest Du hier aber tun:

    if( D > 0.0 )   // wenn der Wert von D größer als 0 ist
        {
            // dann ...
            cout<< "x1: = " << p/2 + sqrt(D) << endl;   // wert für 1.
            cout<< "x2: = " << p/2 - sqrt(D) << endl;   //    und 2. Lösung ausgeben
        }
    

    lt. Deiner Aufgabenstellung sollst Du auch die anderen Fälle abdecken. In C++ geht es dann so weiter

    else if( D == 0.0 )
        {
            cout<< "x2: = " << p/2 << endl;
        }
        else  // hier kann D nur kleiner als 0 sein
        {
            cout<< "x1: = " << p/2 << " + i * " << sqrt(-D) << endl;
            cout<< "x2: = " << p/2 << " - i * " << sqrt(-D) << endl;
        }
    
        system("PAUSE");
        return 0;       // 0 ist ok
    }
    

    Gruß
    Werner



  • danke aber ich habe den if operator noch nicht gelernt
    deshalb waollte ich mit
    auswahloperator oder( Fragezeichenoperator, ternärer Operator oder Bedingungsoperator) diese aufgabe lösen
    mfg
    anndy



  • if() ist kein Operator 😉 (und wo lernst du denn, daß solche Bonus-Eigenschaften wie ?: eher durchgenommen werden als die Programmier-Grundlagen (if oder Schleifen)?)

    *versucht, das if()-Beispiel in ein ?: umzuwandeln*

    cout<< (D<0)
      ? "keine Lösung"<<endl
      : (D>0)
        ? "Zwei Lösungen: x0="<< p/2+sqrt(D) <<", x1="<< p/2-sqrt(D) <<endl
        : "Eine Lösung: x="<< p/2 <<endl;
    


  • an der uni eistieg in c++
    ist sehr schwer diese(?:) zu verstehn if glaube ich ist einfaecher
    ich habe wieder werzucht aber es klappt nicht sch......
    ich habe den text in tutorium 100 mal gelesen aber dort es gibt keine konkrete
    bsp
    sind einige bsp die einfach sind

    mfg anndy



  • so sollte sein
    [cpp]ist sehr schwer diese( ? : )zu verstehn if glaube ich ist einfaecher[cpp]



  • anddy007 schrieb:

    ist sehr schwer diese ( ? : ) zu verstehn if glaube ich ist einfaecher

    Ja, if() ist einfacher zu verstehen und idR auch flexibler, aber wenn du auf ?: bestehst, mußt du da durch.


Anmelden zum Antworten