Berechnung der Nullstellen einer quadratischen Gleichung
-
Hallo,
habe folgende aufgabe bekommen:Gegeben sei die quadratische Gleichung der Form a ⋅x 2 +b ⋅x +c = 0 .
Es sollen beliebige Werte a,b,c∈ℜ zugelassen sein. Entwickeln Sie einen
Algorithmus, der für jede beliebige Wertekombination von a, b, c
a) die Ergebniskategorie (Wie viele/welche Kategorien existieren?) sowie
b) bei Existenz die korrekte(n) Lösung(en) für x
ermittelt. Kategorie und eventuelle Lösungen sind anschließend auszugeben.
Aufgrund der begrenzten Darstellungsgenauigkeit in realen Rechnern sind nicht
nur Fälle mit genau einem Wert von Null kritisch, sondern auch Werte in
unmittelbarer Nähe von 0. Testen Sie daher bitte den Fall Null mittels a < ε ab,
wobei ε vom Rechner und der gewünschten Genauigkeit abhängt. Ein praktisch
meist sinnvoller Wert ist ε = 10−7 . Die anderen Fälle (für die Variablen b und ,
Diskriminante, etc.) implementieren sie bitte analogMein Program sieht dazu wiefolgt aus:
#include <stdio.h> #include <conio.h> #include <math.h> main() { float a = 0, b = 0, c = 0; float q = 0, p = 0; float x1 = 0, x2 = 0; float Wurzel = 0; printf("Geben sie die werte a, b und c für folgende allgemeine quatratische Gleichung zur Berechnung der Nullstellen an:\n\ ax² + bx + c = 0\n\n"); printf("a?\n\n"); scanf("f.2%",&a); fflush(stdin); printf("b?\n\n"); scanf("f%",&b); fflush(stdin); printf("c?\n\n"); scanf("f%",&c); if(a != 0) { p = b/a; q = c/a; Wurzel = ((p * p)/4)-q); if(Wurzel >= 0) { x1 = (-(p)/2) + sqrt(((p*p)/4)-q); x2 = (-(p)/2) - sqrt(((p*p)/4)-q); printf("Es sind Nulstellen bei x1: f.2% und x2: f.2% vorhanden.", x1, x2); getch(); }else{ printf("Es sind keine Nullstellen für die angegebenen Werte vorhanden"); getch(); } }else { printf("Die angegebenen Werte entsprechen keiner quadratischen Funktion da a = 0"); getch(); }; }
Mein Problem hierbei ist, dass es für alle beliebigen Werte
printf("Es sind keine Nullstellen für die angegebenen Werte vorhanden");
angibt.
Habe die if bedingung auch schon auf z.B 1=1 geändert und trotzdem wurde immer nur die else-ausgabe angezeigt.
Würde mich sehr freuen wenn mich jmd auf den fehler bzw meinen Denkfehler aufmerksam machen könnte^^schon mal danke für alle Antworten.
-
Deine Formatangaben bei scanf sind völlig falsch, meistens falsch rum.
-
Sag mal... was hast du eigentlich für einen bösen Compiler?
$ gcc main.c main.c:2:19: error: conio.h: No such file or directory main.c: In Funktion »main«: main.c:16: Warnung: störendes letztes »%« im Format main.c:19: Warnung: störendes letztes »%« im Format main.c:22: Warnung: störendes letztes »%« im Format main.c:26: Fehler: expected »;« before »)« token main.c:26: Fehler: expected statement before »)« token main.c:31: Warnung: » «-Kennzeichen verwendet mit Format »%u« printf main.c:31: Warnung: format »% u« erwartet Typ »unsigned int«, aber Argument 2 hat Typ »double« main.c:31: Warnung: unbekanntes Konvertierungstyp-Zeichen »v« im Format
Im Ernst wird dir niemand abnehmen, dass das Ding fehlerfrei übersetzt werden kann, solange Syntax-Fehler wie die Klammerung in Zeile 26 darin stecken.
-
Es muss überall
scanf ("%f", &blabla);
heißen. Guckst du hier: http://www.cplusplus.com/reference/clibrary/cstdio/scanf/Und Zeile 31 muss lauten:
printf("Es sind Nulstellen bei x1: %.2f und x2: %.2f vorhanden.", x1, x2);
-
µngbd schrieb:
Sag mal... was hast du eigentlich für einen bösen Compiler?
$ gcc main.c main.c:2:19: error: conio.h: No such file or directory main.c: In Funktion »main«: main.c:16: Warnung: störendes letztes »%« im Format main.c:19: Warnung: störendes letztes »%« im Format main.c:22: Warnung: störendes letztes »%« im Format main.c:26: Fehler: expected »;« before »)« token main.c:26: Fehler: expected statement before »)« token main.c:31: Warnung: » «-Kennzeichen verwendet mit Format »%u« printf main.c:31: Warnung: format »% u« erwartet Typ »unsigned int«, aber Argument 2 hat Typ »double« main.c:31: Warnung: unbekanntes Konvertierungstyp-Zeichen »v« im Format
und was hast du für einen schrägen compiler, der fehlermeldungen teils in deutsch, teils in englisch ausgibt?
-
und was hast du für einen schrägen compiler, der fehlermeldungen teils in deutsch, teils in englisch ausgibt?
Wirklich schräg. Aber wie schräg bin erst ich, dass mir das gar nicht mehr auffällt?
-
Es handelt sich doch nicht etwa bei der obigen Aufgabe um Praktikum Nr. 4 (Pflicht-)Teilaufgabe 3?
-
ok danke für hilfestellungen^^
buhkeks schrieb:
Es handelt sich doch nicht etwa bei der obigen Aufgabe um Praktikum Nr. 4 (Pflicht-)Teilaufgabe 3?
zufälligerweise ja^^