Zum Inhalt springen

Fehler im Programm ??


LebenAG

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...