Delphi-PRAXiS

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

mat72 1. Mai 2012 10:21

Delphi-Version: 7

Problem mit einer Schleife
 
Hallo,
ich habe ein Problem mit einer Schleife. In der Schleife soll der Max_Wert ermittelt.
Der Zaehler soll auch gleichzeitig die Position merken in pmax. pmax benoetige ich, um von einer 2ten Matrix einen Wert zu bekommen.
Die Werte f1 bis f9 bekomme ich von einer anderen Procedure.
Den Max-Wert bekomme ich angezeigt, nur die Ausgabe der 2ten Matrix funktioniert nicht.
Habe ich einen Denkfehler in dem Programm?

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var max : extended;
    i,pmax : integer;
    focusarray : array[1..9] of extended;
    matrixarray : array[1..9] of extended;
begin
 foc:=0;
 pmax:=0;
 focusarray[1]:=f1;
 focusarray[2]:=f2;
 focusarray[3]:=f3;
 focusarray[4]:=f4;
 focusarray[5]:=f5;
 focusarray[6]:=f6;
 focusarray[7]:=f7;
 focusarray[8]:=f8;
 focusarray[9]:=f9;

 matrixarray[1]:=-0.4;
 matrixarray[2]:=-0.3;
 matrixarray[3]:=-0.2;
 matrixarray[4]:=-0.1;
 matrixarray[5]:=0;
 matrixarray[6]:=0.1;
 matrixarray[7]:=0.2;
 matrixarray[8]:=0.3;
 matrixarray[9]:=0.4;

 max:=f1;

 for i:=1 to 9 do
   begin
    if max<focusarray[i] then
    max:=focusarray[i];
    pmax:=i;
   end;
   foc:=matrixarray[pmax];
   stringgrid1.cells[1,1]:=FloatToStrF(foc, ffNumber, 8, 3);
   stringgrid1.cells[2,1]:=FloatToStrF(max, ffNumber, 8, 3);
end;
Danke fuer eure Hilfe.

mkinzler 1. Mai 2012 10:24

AW: Problem mit einer Schleife
 
pmax ist bei die immer gleich der Zählvariable, anstatt nur wenn Wert größer Maximum
Delphi-Quellcode:
    if max<focusarray[i] then
    begin
        max:=focusarray[i];
        pmax:=i;
    end;

Bummi 1. Mai 2012 10:25

AW: Problem mit einer Schleife
 
ohne weitergehende Untersuchung
Delphi-Quellcode:
    if max<focusarray[i] then
    begin
      max:=focusarray[i];
      pmax:=i;
    end;

himitsu 1. Mai 2012 14:50

AW: Problem mit einer Schleife
 
pmax steht auf 0, wenn in der Schleife nichts größer als der erste Wert ist,
und schon stimmt was nicht mehr, wenn du auf den Index 0 zugreifen willst. (den es nicht gibt :zwinker:)

Geh mal in die Projektoptionen, schalte die Bereichsprüfung an und schau ob was passiert.

Delphi-Quellcode:
 //max:=0; // eigentlich nutzlos, da es nachher sowieso wieder überschrieben wird
 //pmax:=0; //
 ...
 max:=f1;
 pmax:=1; // vergessen zu setzen
 for i:=2 to 9 do // 1 ist doch schon gesetzt, wozu nochmal prüfen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 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