Delphi-PRAXiS

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;

Cöster 6. Okt 2006 20:05

Re: problem mit for-schleife
 
Zitat:

Zitat von Mb123
Delphi-Quellcode:
for i:=1 to 5 do
  x:= f(i);

Mit den Variablenbezeichnungen könntest du später mal ganz schön durcheinander kommen. Logischer wäre:

Delphi-Quellcode:
for x := 1 to 5 do
  y := f(x);

Zitat:

Zitat von Mb123
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 ?

Du könntest statt von 1 bis 5 von 1 bis 50 gehen: So in etwa:

Delphi-Quellcode:
for 10fachX := 1 to 50 do
  y := f(10fachX / 10);

Mb123 23. Okt 2006 21:14

Re: problem mit for-schleife
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nabend..
ich hab das programm von der theorie her jetzt zwar fertig, aber gibt trotzdem noch ein paar probleme:
So siehts erstmal aus (am design hab ich noch nichts gemacht ! deswegen ist das erstmal nebensächlich) --> siehe unten.

also

1.) wie kann ich in der listbox in der die werte stehen den abstand zwischen zwei werten vergrößern, sodass nachher die x und f(x) werte untereinander stehen ?
Delphi-Quellcode:
ListBox1.Items.Add(FloatToStr(x)+#9+FloatToStr(y));
2.) ich würde gerne in der ersten zeile der listbox unter x und f(x) eine gestrichelte linien machen, dazu hab ich dann gedacht ob ich nich einfach hinter
Delphi-Quellcode:
 ListBox1.Items.text := 'x       f(x)';
dieser zeile einen absatz machen kann und dann die '---------' machen kann ?

falls mir da jemand weiterhelfen könnte wäre das spitze !


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 Uhr.

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