Wenn jemand Lust hat, meinen Code mal zu überfliegen:
-
Th69 schrieb:
Und eure Mathekenntnisse sollte ihr auch mal auffrischen, denn die Berechnung der Ergebnisse der quadratischen Gleichung sind falsch, s.a. http://de.wikipedia.org/wiki/Quadratische_Gleichung
Die beiden Nullstellen sind nicht einfach + und - erg !!!
an der rechnung hab ich nix geändert^^ hab einfach mal angenommen, dass er schon wissen wird, was er rechnet : D
-
|< schrieb:
und es will immer noch nicht klappen
also wenn ich es führe, dann lässt er bei s nur a,d,e eingeben und schreibt dann brought to you...
wenn man n eingibt, kommt nur brouht to you...
das einzige was funktioniert ist ungueltige eingabe -.-
#include<iostream> #include<windows.h> #include<math.h> #include<conio.h> using namespace std; int main() { for(;;) { cout<<"Nullstellenberechnungsprogramm Zer0 V. 1.0\n"; cout<<"\nLiegt eine Scheitelpunktform oder \neine Normalform vor? (s/n)\n"; char answer; cin>>answer; float a,b,c,d,e; char abfrage; if(answer=='s') { cout<<"Geben sie a ein! (Kein a gegeben == 1)\n"; cin>>a; cout<<"Geben sie d ein!\n"; cin>>d; cout<<"Geben sie e ein!\n\n"; cin>>e; b=(2*d)*a; c=e+((d*d)*2); abfrage='h'; } if(answer!='s' && answer!='n') { cout<<"Ungueltige Eingabe!\n"; } if(answer=='s' || answer=='n') { if(abfrage!='h') { cout<<"Geben sie a ein! (Kein a gegeben == 1)\n"; cin>>a; cout<<"Geben sie b ein!\n"; cin>>b; cout<<"Geben sie c ein!\n"; cin>>c; } float wurzel=sqrt((((b/2)/a)*((b/a)/a))-(c/a)); float erg=wurzel-(b/2)/a; if(erg<=0) { cout<<"N={ } (Leere Menge)\n"; } if(erg>0) { cout<<"N={-"<<erg<<"; "<<erg<<"}\n"; } } cout<<"Brought to you by:\n"; getch(); system("cls"); } }der compiler muss doch unmengen an warnungen ausspucken. mach die mal weg
-
@99744e34a
ich würde sagen, er gibt nur eine aus und das erst auf W4...
Die eine ist, dass _getch() deprecated ist
-
nein, er gibt keine warnung aus!
und zur pq-formel:
x1 = + [Wurzel](p/2)2 - q[/Wurzel] - p/2
x2 = - [Wurzel](p/2)2 - q[/Wurzel] - p/2
-
Nur falls Du den Code von unskilled nicht einfach nur übernehmen willst:
-
Deine Variable abfrage wird uninitialisiert benutzt (darauf haben Dich aber schon mehrere hingewiesen, mir ist nur nicht klar, ob Du das mitgekriegt hast)
-
zur Formel:
-a +/- b hat zwei Lösungen, wie Du schon richtig gepostet hast:
+b-a
und
-b-aWas Du in Deinem Programm allerdings berechnest ist
+(b-a)
und
-(b-a),
d.h. Du kannst nicht einfach erg und -erg nehmen, wie das Th69 schon völlig richtig angemerkt hat.- Es kommt vielleicht manchmal keine Ausgabe, weil erg weder <=0, noch >0 ist, sondern schlicht und ergreifend NAN.
-
-
unausgeschlafen schrieb:
- Es kommt vielleicht manchmal keine Ausgabe, weil erg weder <=0, noch >0 ist, sondern schlicht und ergreifend NAN.
ja, das hatte ich shcion vorher bemerkt...
also könnte man dass dan mittels if(erg=NaN) machen???
wie erreiche ich, dass, wenn der wert "NaN" ist, "Keine Nullstellen" ausgegeben wird???
-
eigtl musst du nur nach a gucken:
if(a == 0) //ungültige eingabewenn
a != 0ist, dann kann nix mehr mit NaN rauskommen^^bb
-
unskilled schrieb:
eigtl musst du nur nach a gucken:
if(a == 0) //ungültige eingabewenn
a != 0ist, dann kann nix mehr mit NaN rauskommen^^bb
das habe ich jetzt nich ganz verstanden

-
*flieg*
-
@>|<:
naja - NaN kann doch nur rauskommen, wenn eine ungültige operation ausgeführt wird - und da fällt mir hier nur eine Division durch 0 ein^^
und eben ne wurzel aus irgendwas negativem - aber das hab ich dir ja schon gezeigt, dass du das abfangen musst...@hubschrauber: ab und an muss ich direkt lachen, wenn ich so was les : D
bb
-
pushen? :D:D:D ne xD
joa,klar -.-
aber wurzel aus etwas negativem muss ich nicht ziehen, ich kann auch einfach zweimal das normale erg ausgeben und bei einem halt ein minus-zeichen vorsetzen

thx, >|<
-
Okay, habs nochmal überdacht *lach*
jo, muss ich wohl schauen, dass, wenn das programm aus ner negativen zahl ne wurzel ziehen will, die meldung ausgibt, dass es keine nullstelle(n) gibt!!!
und eben, dass es nicht weiterrechnet, bis zum ende,

thx schonmal für eure hilfe,
|<
(noch nichzt closed
:D)