HILFE! PQ-Formel in C++ zu C umwandeln



  • Hi, brauche hilfe mit c..

    haben in der uni die aufgabe bekommen ein programm was in C++ geschrieben ist nach C umzuschreiben. Nun habe ich leider keinlerei vorahnungen und weiß nicht weiter..
    könnte mir jemand helfen?

    Hier das programm.. es soll quadratische gleichungen lösen.. mit hilfe der pq-formel..

    #include<iostream.h>
    #include<iomanip.h> //Genauigkeitssteuerung
    #include<math.h>

    void main(void)
    {double a, b, c, p, q, x1, x2, disk;
    char z;
    do // Schleife zur Eingabewiederholung: do{ ... }while(Bedingung)
    {cout <<"Loesungen der quadratischen Gleichung a*x^2 + b*x + c = 0:\n";
    cout <<"Eingabe der Koeffizienten:\n";
    cout << "a= "; cin >> a;
    cout << "b= "; cin >> b;
    cout << "c= "; cin >> c; ;

    if (a==0)//Sonderfaelle
    if (b!=0) cout <<"Sonderfall: Lineare Gleichung b*x + c = 0\n"
    << "Es existiert nur 1 Loesung x = - c / b = " << -c/b ;
    else if (c==0) cout << "Entartetes Beispiel - x beliebig, erfuellt die Gleichung.\n";
    else cout << "Widerspruch - es existiert keine Loesung der Aufgabe\n";
    else
    { /* Einstellen eines festen Dezimalpunktes moeglich durch:
    cout.setf(ios::fixed, ios::floatfield); /
    cout.precision(11); // reelle Werte mit 11 Nachkommastellen
    // Normalform der quadratischen Gleichung x^2 + p x + q = 0 herstellen
    p=b/a; q=c/a; disk = p
    p/4 - q;
    x1=x2=-p/2;

    if (disk > 0)
    { disk = sqrt(disk);
    x1-= disk; x2+= disk;
    //Ausgabe der reellwertigen Lösungen
    cout<<" 1. Loesung x1 = " << x1 << endl;
    cout<<" 2. Loesung x2 = " << x2 << endl;
    }
    else
    if (disk==0)
    { cout<<" 1. Loesung x1 = " << x1 << endl;
    cout<<" 2. Loesung x2 = " << x1 << endl;
    }
    else { disk = sqrt(-disk);
    cout<<" 1. Loesung x1 = " << p << " - i * " << disk << endl;
    cout<<" 2. Loesung x2 = " << p << " + i * " << disk << endl;
    }
    }
    cout<<"\nNoch eine Eingabe - j / n \n";
    cin>>z;
    }while (z=='j'); // Andere Daten ?
    }//Ende main

    ..ein bischen habe ich schon rumprobiert.. bekomme aber beim kompilieren immer um die 15-20 fehler.. :((

    pls help

    und danke schonmal an alle die mir helfen

    ciao



  • Erstmal solltest du "int main(void)" schreiben - alles andere ist kein ANSI C. Und als nächstes solltest du stückweise alle C++ Features durch entsprechende C Funktionen ersetzen (cout durch printf() etc).



  • so hab mich mal versucht.. mit abgucken von anderen vorlagen..
    hoffe ich hab das programm jetzt nicht ganz kaputt gemacht.. an manchen stellen hab ich teils nichts verändert, weil ich einfach nicht weiß wie es richtig gehört 😞

    #include<stdio.h>
    #include<stdlib.h>

    int main(void)
    {double a, b, c, p, q, x1, x2, disk;
    char z;
    do // Schleife zur Eingabewiederholung: do{ .. ] while(Bedingung)
    {printf("Loesungen der quadratischen Gleichung ax^2 + bx + c = 0:\n");
    printf("Eingabe der Koeffizienten:\n");
    printf("a= ");
    scanf("%i",&a);
    printf("b= ");
    scanf("%i",&b);
    printf("c= ");
    scanf("%i",&c);

    {if (a==0) //Sonderfaelle
    if (b!=0) printf("Sonderfall: Lineare Gleichung b*x + c = 0\n")
    printf("Es existiert nur 1 Loesung x = - c / b = ") -c/b ;
    else if (c==0) printf("Entartetes Beispiel - x beliebig, erfuellt die Gleichung.\n");
    else printf("Widerspruch - es existiert keine Loesung der Aufgabe\n");
    else
    { /* Einstellen eines festen Dezimalpunktes moeglich durch:
    cout.setf(ios::fixed, ios::floatfield); /
    cout.precision(11); // reelle Werte mit 11 Nachkommastellen
    // Normalform der quadratischen Gleichung x^2 + p x + q = 0 herstellen
    p=b/a; q=c/a; disk = p
    p/4 - q;
    x1=x2=-p/2;

    if (disk > 0)
    { disk = sqrt(disk);
    x1-= disk; x2+= disk;
    //Ausgabe der reellwertigen Lösungen
    printf("1. Loesung x1 = " ,x1);
    printf(" 2. Loesung x2 = " ,x2);
    }
    else
    if (disk==0)
    { printf(" 1. Loesung x1 = " ,x1);
    printf(" 2. Loesung x2 = " ,x1);
    }
    else { disk = sqrt(-disk);
    printf(" 1. Loesung x1 = " << p << " - i * " << disk << endl);
    printf(" 2. Loesung x2 = " << p << " + i * " << disk << endl);
    }
    }
    printf("\nNoch eine Eingabe - j / n \n");
    scanf("%c", &z);
    }while (z=='j'); // Andere Daten ?
    }//Ende main

    danke nochmals für hilfe
    cu



  • Kleiner Tip: verwende cpp-Tags, dann wird das besser formatiert.

    *wühlt sich durch den Text durch*

    printf("Es existiert nur 1 Loesung x = - c / b = ") -c/b ;
    

    Das ist (sorry) gequirlte S***, versuch's besser so:

    printf("Es existiert nur 1 Loesung x = - c / b = %f",-c/b);
    

    [/cpp]cout.setf(ios::fixed, ios::floatfield); */
    cout.precision(11);
    [cpp]

    Diese Angaben werden zu Format-Spezifikatoren bei den nachfolgenden Ausgaben: "%11f" (die 11 entspricht der precision, das f dem setf).

    Ansonsten solltest du dir dringend die Dokumentation zu printf ansehen, um deine Ausgaben in Ordnung zu bringen (ich weiß, das ist etwas komplizierter zu verwenden als cout).


Anmelden zum Antworten