Autor Beitrag
Bahade
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 18.10.02 20:37 
Hallo,

hier ist mein erstes selbstgeschriebenes (Rechen)programm mit Delphi5.
Was bedeutet double? Was bezweckt der Hilfstring? Was bedeuten die anderen Sachen?

Was muss ich verändern, damit die Rechnung auch für a=0 durchgeführt werden kann (lineare Gleichung)?

Ich freue mich auf euere Hilfe!

Viele Grüße,
Bahade
ausblenden 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:
procedure TForm1.BBerechnenClick(Sender: TObject);
VAR a, b, c, d, x1, x2, x: double;
  HilfStr: String;
begin
  a:=strtofloat(EEingabeA.Text);
  b:=strtofloat(EEingabeB.Text);
  c:=strtofloat(EEingabeC.Text);
  d:=b*b-4*a*c;

  if d > 0 then begin
    x1:=-(b+sqrt(d))/(2*a);
    x2:=-(b-sqrt(d))/(2*a);
    Hilfstr:='x1='+floattostrf(x1,ffFixed,10,2)+'   x2='+floattostrf(x2,ffFixed,10,2);
  end
  else if d=0 then begin
      x:=-b/(2*a);
      Hilfstr:='x='+floattostrf(x,ffFixed,10,2);
    end
    else Hilfstr:='Keine Lösung';

  LAusgabe.caption:=Hilfstr;
end;

end.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 18.10.02 20:56 
Hi!

double: in Delphi gibt es verschiedene Datentypen für Zahlen. Sie unterscheiden sich durch Größe der speicherbaren Zahlen und vor allem auch dadurch, ob sie ganze Zahlen oder auch reelle Zahlen speichern können. Double kann dabei reelle Zahlen in folgendem Bereich speichern: 5.0 x 10^–324 .. 1.7 x 10^308

Hilfstring: der ist eigentlich nicht nötig. Es ist einfach nur kürzer, "hilfstring" zu schreiben, als jedesmal "LAusgabe.caption" zu schreiben.

andere Sachen: StrToFloat:Wandelt einen String in eine Fließkommazahl um.

andere Sachen: floattostrf:Wandelt eine Fließkommazahl (hier: double) in einen String um, wobei eine bestimmte Formatierung und eine Ausgabegenauigkeit verwendet wird.

Hoffe, ich konnte Dir helfen, ansonsten frag einfach nach.

MfG,
Peter

Ach ja, den Fall a=0 musst Du vorher abfangen. Also irgendwie "IF a=0 THEN {Extra-BErechnung} ELSE {Das, was jetzt da steht}". So ungefähr zumindest. Das kommt dann am besten vor "d:=b*b-4*a*c;".

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Sa 19.10.02 13:35 
Hi
willkommen on Board :welcome:

Bahade hat folgendes geschrieben:

hier ist mein erstes selbstgeschriebenes (Rechen)programm mit Delphi5.

Bist du sicher, dass es nicht selbstABgeschrieben heissen sollte? :wink:

Bahade hat folgendes geschrieben:

Was bedeutet double? Was bezweckt der Hilfstring? Was bedeuten die anderen Sachen?

Mein Tipp wäre: Arbeite mal die tollen Einsteiger- und Grundlagentutorials durch, die du hier am Board finden kannst. Zum Beispiel dieses.

Missversteh mich bitte nicht. Das soll nicht heissen, dass du keine Einsteigerfragen stellen sollst, aber es ist besser eine Antwort auf eine konkrete Frage zu einem Problem zu geben, als einen Programmierlehrgang in fünf Sätzen.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Bahade Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 20.10.02 12:54 
Titel: a=0
Vielen Dank für die Antworten, stimmt ich bin ein Anfänger, habe das nicht wirklich selbstgemacht und habe nun auch zwei konkrete Fragen:

Was muss ich denn genau machen, um den Fall a=0 zu berücksichtigen. Also so wie das Peter beschrieben hat, erscheint gar nichts mehr.
bzw. was muss genau in THEN {Extra-BErechnung} ?

Kann mir jemand eine kurze Erklärung für String geben?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 20.10.02 13:25 
Hi!

zu a=0:Wenn Du die Gleichung ax^2+bx+c=0 hast und a=0 ist, bleibt davon ja nicht mehr viel übrig: bx+c=0 <=> x=-c/b für b!=0. Ist b=0 gibt es entweder unendlich viele Lösungen (c=0) oder gar keine (c!=0).

Also, der Qulltext muss dann so aussehen:

ausblenden volle Höhe 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:
31:
procedure TForm1.BBerechnenClick(Sender: TObject);
VAR a, b, c, d, x1, x2, x: double;
  HilfStr: String;
begin
  a:=strtofloat(EEingabeA.Text);
  b:=strtofloat(EEingabeB.Text);
  c:=strtofloat(EEingabeC.Text);
  if a=0 then
  begin
    if b<>0 then
    begin
      x:=-c/b;
      Hilfstr:='x='+floattostrf(x,ffFixed,10,2);
    end else if c=0 then Hilfstr:='Unendlich viele Lösungen'
    else Hilfstr:='Keine Lösung!';
  end else
  begin
    d:=b*b-4*a*c;
    if d > 0 then begin
      x1:=-(b+sqrt(d))/(2*a);
      x2:=-(b-sqrt(d))/(2*a);
      Hilfstr:='x1='+floattostrf(x1,ffFixed,10,2)+'   x2='+floattostrf(x2,ffFixed,10,2);
    end
    else if d=0 then begin
      x:=-b/(2*a);
      Hilfstr:='x='+floattostrf(x,ffFixed,10,2);
    end
    else Hilfstr:='Keine Lösung';
  end;
  LAusgabe.caption:=Hilfstr;
end;


zu String: Ein String ist eine Zeichenkette, also eine simple Aneinandereihung von Zeichen. Auf diesen String sind verschiedene Operationen definiert und es gibt verschiede Methoden, mit denen man Strings bearbeiten kann. Das Thema ist allerdings zu groß, um es hier zu behandeln. Die Delphihilfe gibt dort einiges her, bei weiteren Fragen postest Du dann einfach nochmal.

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".