LebenAG Geschrieben 4. Januar 2007 Geschrieben 4. Januar 2007 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. Zitieren
Klotzkopp Geschrieben 4. Januar 2007 Geschrieben 4. Januar 2007 Meldet der Compiler keine Warnung? Du hast #include <math.h> vergessen. Deine Einrückung ist übrigens furchtbar Zitieren
LebenAG Geschrieben 5. Januar 2007 Autor Geschrieben 5. Januar 2007 Ich hab die Sprache erst vor 5 Tagen gelernt. Was bewirkt denn #include <math.h>?? Zitieren
LebenAG Geschrieben 5. Januar 2007 Autor Geschrieben 5. Januar 2007 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. Zitieren
Klotzkopp Geschrieben 5. Januar 2007 Geschrieben 5. Januar 2007 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. Zitieren
LebenAG Geschrieben 6. Januar 2007 Autor Geschrieben 6. Januar 2007 in meinem Programm: p = 5 q = -4 Wert1 = 0.7016 Wert2 = -5.7016 rauskommen sollte: Wert 1 = 7.016 Wert 2 = -5.7016 Zitieren
Klotzkopp Geschrieben 6. Januar 2007 Geschrieben 6. Januar 2007 0.7016 ist (im Rahmen der Ausgabegenauigkeit) richtig. Wie kommst du auf 7.016? Zitieren
LebenAG Geschrieben 13. Januar 2007 Autor Geschrieben 13. Januar 2007 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. Zitieren
LebenAG Geschrieben 13. Januar 2007 Autor Geschrieben 13. Januar 2007 vielleicht sollte ich dazu sagen, dass die PQ-Formel x1/2 = -(p/2) +- Wurtzel((P/2)-q) ist Zitieren
Klotzkopp Geschrieben 13. Januar 2007 Geschrieben 13. Januar 2007 Aber das ergebniss muss auf jedenfall 7.016 seinSagt 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 Zitieren
LebenAG Geschrieben 14. Januar 2007 Autor Geschrieben 14. Januar 2007 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. Zitieren
Empfohlene Beiträge
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.