Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Folgendes Programm wurde in C geschrieben. Es soll die PQ-Formel ausrechnen. Wenn p und q positiv sind gibt er als ersten Wert eine falsche Lösung aus.

/*PQ-Formel Rechner*/

#include <stdio.h>

main() {

       double z,p,q;

       printf("\n\tP Q - F O R M E L - R E C H N E R \n");

       for (; {printf("\nBitte p eingeben: ");

       scanf("%lf",&p);

       printf("\nBitte q eingeben: ");

       scanf ("%lf",&q);

       z=(p/2)*(p/2)-q;

       if (z<0){

                printf("\nEs gibt keine Loesung");

                }

       if (z==0){

                 printf("\nEinzige Loesung %.4lf",-(p/2));

                 }

       if (z>0) {

                printf("\n1.Wert : %.4lf",-(p/2)+sqrt (z));

                printf("\n2.Wert : %.4lf",-(p/2)-sqrt (z));

                printf("\n\n\n");

               }

               printf("\n\tP Q -F O R M E L - R E C H N E R\n\n");

               } 

               }[/code]

Villeicht könnt ihr mir helfen und mir sagen was an dem Programm falsch ist.

Danke.

Geschrieben

Ich hab das jetzt ma mit #include <math.h> versucht. Wenn beide Werte nun positiv sind kommt das richte Ergebnis raus. Ist q allerdings negativ, ist der erste Wert falsch.

Geschrieben

Allgemein bewirkt das Einbinden einer Headerdatei, dass dem Compiler die darin deklarierten Variablen und Funktionen bekanntgemacht werden.

Die Funktion sqrt, die du in deinem Programm benutzt, ist in math.h deklariert.

Das Programm lässt sich auch ohne diese Deklaration compilieren und ausführen, aber der Compiler geht in diesem Fall davon aus, dass sqrt keine Parameter hat und int zurückgibt. Tatsächlich gibt sqrt aber double zurück, und der ist bei dir wohl größer als int. Dadurch geht ein Teil des Rückgabewertes verloren, und es kommt zu falschen Werten.

Aber wie gesagt, der Compiler sollte dabei eigentlich eine Warnung ausspucken. Und du tust gut daran, Warnungen nicht zu ignorieren.

Wenn beide Werte nun positiv sind kommt das richte Ergebnis raus. Ist q allerdings negativ, ist der erste Wert falsch.
Nenn mal ein Beispiel.
Geschrieben

genau das ist das Problemm ich weiß es net.

Aber das ergebniss muss auf jedenfall 7.016 sein

P.S. Sorry, dass ich mich so lange nicht gemeldet habe war im Urlaub.

Geschrieben
Aber das ergebniss muss auf jedenfall 7.016 sein
Sagt wer? Das ist schlicht und einfach falsch. Setz doch für x mal 7.016 in die Gleichung ein. Da kommt irgendwas um die 80 heraus, aber sicher nicht Null.

vielleicht sollte ich dazu sagen, dass die PQ-Formel x1/2 = -(p/2) +- Wurtzel((P/2)-q) ist

Das ist auch falsch. Aber in deinem Programm ist die Formel richtig umgesetzt.

Siehe auch hier: Quadratische Gleichung − Wikipedia

Geschrieben

villeicht hast du recht

ich habe vor einem jahr die selbe formel in basic geschrieben undd da kam dieses andere ergebnis raus

könnte ja sein, dass die basiv formel falsch ist.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...