Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi problem mit for-schleife (https://www.delphipraxis.net/78540-problem-mit-schleife.html)

Mb123 6. Okt 2006 17:32


problem mit for-schleife
 
hallo ,
ich habe folgendes problem:
ich möchte die y-werte der funktion f ausrechnen ( f(x)=x*x ). nun hab ich mir gedacht ich mache dies einfach mit einer for-schleife z.b. von 1 bis 5. und dann wollte immer wenn eine zahl von 1 bis 5 eingesetzt wird , den errechneten wert ausgeben haben. der code sieht nun so aus :
Delphi-Quellcode:
function f(x: extended): extended;
begin
f:= x*x
end;

[...]

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to 5 do
  x:= f(i);
  Label4.Caption := FloatToStr(x);
end;
bei der rechnung kommt allerding 25 raus und die werte werden natürlich nich enzelt ausgeben.. wenn mir da jemand weiterhelfen könnte wär das spitze !! danke

mkinzler 6. Okt 2006 17:35

Re: problem mit for-schleife
 
Der wert des labels wird immer wieder überschrieben nimm lieber ein Memo zur Ausgabe.
Delphi-Quellcode:
...
for i:=1 to 5 do
  x:= f(i);
  Memo.Lines.Add( FloatToStr(x));
end;

Neutral General 6. Okt 2006 17:36

Re: problem mit for-schleife
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to 5 do
  x:= f(i);
  Label4.Caption := FloatToStr(x); // Diese Zeile wird NICHT wiederholt !
end;
1. Siehe Quelltext
2. Siehe Quelltext:

Delphi-Quellcode:
Label4.Caption := Label4.Caption + 'f(' + IntToStr(i) + ')= ' + FloatToStr(x) + #13#10;
1+2 =>

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to 5 do
begin
  x:= f(i);
  Label4.Caption := Label4.Caption + 'f(' + IntToStr(i) + ')= ' + FloatToStr(x) + #13#10;
end;
end;
So würd ichs eventuell machen :)

Gruß
Neutral General

Nils_13 6. Okt 2006 17:37

Re: problem mit for-schleife
 
Delphi-Quellcode:
for i:=1 to 5 do
  x:= f(i);
ist falsch. Du kannst dir ein Array erstellen. Beispiel:
Delphi-Quellcode:
var Zahlen: Array of Integer // oder z.B Real
begin
  SetLength(Zahlen, 4)
  for i:=1 to 5 do
    Zahlen[i] := x;
Hat Vorteile. Dann noch
Delphi-Quellcode:
Edit1.Text := 'dein Text'
for i := 1 to 5 do
  Edit1.Text := Edit1.Text + ' ' + IntToStr(f[i]);

Matze 6. Okt 2006 17:37

Re: problem mit for-schleife
 
@mkinzler: Dann aber das begin-end nicht vergessen:

Delphi-Quellcode:
for ...
begin
  // ...
end;
Mit dem Label ginge es auch, dann jedoch so in der Art:

Delphi-Quellcode:
Label1.Caption := Label1.Caption + ', ' + FloatToStr(x);

Edit: @Nils: Wieso ein Array? "f" ist der Name der FUnktion.

Schubi 6. Okt 2006 17:38

Re: problem mit for-schleife
 
Richtig. Ist auch logisch dass da 25 raus kommt. Weil der letzte Aufruf von f mit dem Parameter 5 geschieht. Und 5 x 5 = 25 ;-)

mkinzler 6. Okt 2006 17:39

Re: problem mit for-schleife
 
Zitat:

@mkinzler: Dann aber das begin-end nicht vergessen:
Klar; das passiert, wenn amsn schnell copy&Paste verwendet.

Mb123 6. Okt 2006 17:48

Re: problem mit for-schleife
 
danke schon mal dafür !!

dann hab ich noch zwei fragen:
1) kann man die laufvariable i auch als real machen ? klappt nämlich irgendwie nich

und

2) kann man die schritt weite um die i erhöht wird auch auf 0,5 runter setzen oder 1,5 erhöhen ?

mkinzler 6. Okt 2006 17:51

Re: problem mit for-schleife
 
Zitat:

1) kann man die laufvariable i auch als real machen ? klappt nämlich irgendwie nich
Nein, muß Integer sien.
Zitat:

2) kann man die schritt weite um die i erhöht wird auch auf 0,5 runter setzen oder 1,5 erhöhen ?
Direkt nicht. Pascal kennt nur die Schritte +1 und -1. Du kannst aber innerhalb der Schleife eine weitere Variable nehmen die du dann aus der Laufvaribalen berechnest.

dino 6. Okt 2006 17:53

Re: problem mit for-schleife
 
for variablen müssen einfache lokale integer variablen sein

wie wäre es mit
Delphi-Quellcode:
vari:Extended;
i:=-4;
while i < 4 do
begin
inc(i,0.5);
\\...
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz