| Autor |
Beitrag |
Seminex
Hält's aus hier
Beiträge: 3
|
Verfasst: So 12.12.10 21:12
Hey Leute,
ich arbeite nicht sehr lange mit Delphi 5 und habe auch kaum Erfahrung mit ähnlichem und kenne keine Fachwörter ,also dieses bitte in der Antwort berücksichtigen!
Am besten direkt in meinem Text verbessern und eine kurze Erklärung warum dieses gemacht wird!
So eine kurze Erklärung was ich gemacht habe:
Ich will eine quadratische Gleichung mit der Pq-Formel lösen. Also in 2 verschiedenen Editfenstern wird einmal p und das andere Mal q angegeben. Dann soll es erkennen ob die Gleichung lösbar ist oder nicht und das kommt ja auf die Wurzel an! Sprich, wenn der Wurzelinhalt >0 ist, gibt es 2 Möglichkeiten, bei =0 gibt es nur eine Möglichkeit und wenn der Inhalt <0 ist, dann gibt es keine Lösung und das soll er auch angeben! Deswegen habe ich 3 Labelfenster ,in dem einem wird x1 angegeben, in dem anderen x2 und in dem 3. ,falls der Inhalt der Wurzel <0 ist, "nicht lösbar" steht! Nur leider funktioniert es nicht so wie ich es mir gedacht habe, deswegen such ich euch nun um Rat auf und hoffe auf schnelle Hilfe!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| var Form1: TForm1; p,q,a,b,c:real;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin label1.caption:=' '; label2.caption:=' '; p:=strtofloat(edit1.text) ; q:=strtofloat(edit2.text) ; a:=(p/2)*(p/2)+q ; if (a>0) then b:=0-(p/2)*(p/2)+sqrt((p/2)*(p/2)-q); if (a>0) then c:=0-(p/2)*(p/2)-sqrt((p/2)*(p/2)-q); if (a=0) then b:=0-(p/2)*(p/2);
if (a=0) then c:=0-(p/2)*(p/2); if (a<0) then label3.caption:='nicht lösbar'; if (a>=0) then label1.caption:=floattostr(b); if (a>=0) then label2.caption:=floattostr(c);
end;
end. |
Moderiert von Gausi: Quote- durch Delphi-Tags ersetzt
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 12.12.10 21:32
|
|
HenryHux
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: So 12.12.10 21:33
Du hast ne Falsche Formel!
Versuche es mal so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| procedure TForm1.Button1Click(Sender: TObject); var p,q,a,b,c:real; begin label1.caption:=''; label2.caption:=''; p:=strtofloat(edit1.text); q:=strtofloat(edit2.text);
a:=sqr(p/2)-q; if a>0 then begin b:=0-(p/2)*(p/2)+sqrt((p/2)*(p/2)+q); c:=0-(p/2)*(p/2)-sqrt((p/2)*(p/2)+q); label1.caption:=floattostr(b); label2.caption:=floattostr(c); end else if a=0 then begin b:=0-(p/2)*(p/2); c:=0-(p/2)*(p/2); label1.caption:=floattostr(b); label2.caption:=floattostr(c); end else begin label3.caption:='nicht lösbar'; end; end; |
Lg
Edit : Falsche Mathe Kenntnisse ins Spiel gebracht 
Zuletzt bearbeitet von HenryHux am So 12.12.10 21:39, insgesamt 2-mal bearbeitet
Für diesen Beitrag haben gedankt: Seminex
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 12.12.10 21:35
|
|
Seminex 
Hält's aus hier
Beiträge: 3
|
Verfasst: So 12.12.10 22:01
Danke  Kein Wunder, dass es nicht funktionierte^^
|
|
Fiete
      
Beiträge: 618
Erhaltene Danke: 368
W7
Delphi 6 pro
|
Verfasst: Mo 13.12.10 12:19
Mit Mathe Kenntnissen (komplexe Zahlen) läßt sich das Problem vollständig lösen.
Der Radikand kann darf auch negativ sein.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| procedure TPQ.RechneClick(Sender: TObject); var a,b,c,p,q,Radikand,x1,x2:Extended; Fehler:Integer; begin val(Edita.Text,a,Fehler); if Fehler>0 then begin MessageDlg('Fehler in der ersten Zahl an Position '+IntToStr(Fehler)+'!!!',mtError,[mbRetry],0); exit; end; val(Editb.Text,b,Fehler); if Fehler>0 then begin MessageDlg('Fehler in der zweiten Zahl an Position '+IntToStr(Fehler)+'!!!',mtError,[mbRetry],0); exit; end; val(Editc.Text,c,Fehler); if Fehler>0 then begin MessageDlg('Fehler in der dritten Zahl an Position '+IntToStr(Fehler)+'!!!',mtError,[mbRetry],0); exit; end; if a=0 then begin MessageDlg('keine quadratische Gleichung!',mtError,[mbRetry],0); exit; end; p:=b/a;q:=c/a; Radikand:=sqr(p)/4-q; if Radikand<0 then begin MessageDlg('negativer Radikand!',mtError,[mbOk],0); MessageDlg('Es gibt zwei komplexe Lösungen!',mtInformation,[mbOk],0); EditX1.Text:=FloatToStr(-p/2)+'+'+FloatToStr(sqrt(-Radikand))+'i'; EditX2.Text:=FloatToStr(-p/2)+'-'+FloatToStr(sqrt(-Radikand))+'i'; end else begin x1:=-p/2+sqrt(Radikand); x2:=-p/2-sqrt(Radikand); EditX1.Text:=FloatToStr(x1); EditX2.Text:=FloatToStr(x2); end end; |
Mehr Infos hier de.wikipedia.org/wiki/Komplexe_Zahl
Gruß
Fiete
_________________ Fietes Gesetz: use your brain (THINK)
|
|
|