[delphi] stringgrid i roznica

0

problem w tym ze interesuje mnie roznica pomiedzy wartoscia max i minimalna - wartosc max jest ok, ale wartosc minimalna ma wartosc 0 - zawsze.... bez wzglwedu na wprowadzone do stringgrida wartosci....

pomocy ::

var
i,smax,smin:integer;
begin
i:=1;
repeat
if StringGrid1.cells[stringgrid1.col,i] <> '' then
begin
if strtoint(StringGrid1.cells[stringgrid1.col,i]) <= smin then
begin
smin := strtoint(StringGrid1.cells[stringgrid1.col,i]);
end else if strtoint(StringGrid1.cells[stringgrid1.col,i]) >= smax then
begin
smax := strtoint(StringGrid1.cells[stringgrid1.col,i]);
end;
end;
if i = stringgrid1.rowcount-1 then
begin
form1.caption := inttostr(smax-smin);
end;
i:=i+1;
until i=StringGrid1.rowCount ;
end;

0
  1. Pewnie w StringGrid masz tylko liczby dodatnie?

  2. Zadeklaruj początkowe wartości smax i smin.

  3. Proponuję zastosować pętlę for i:=0 to stringgrid1.rowcount-1 zamiast repeat.

0

z tym ze nie wiem jakie wartosci wprowadzi user, nie ma innej mozliwosci, oraz drugie pytanie, czemu wartosc smin i smax na poczatku przyjmuje wartosc 0 zamaist byc po prostu "pusta"?

dzieki za ta czesc pomocy

0

Co to znaczy "pusta"? Zmienna musi mieć jakąś wartość.
Przyjmuje wartość 0 bo tak działa kompilator.

Jeżeli nie wiesz jakie wartości wprowadzi user to zadeklaruj wartości początkowe
smax=bardzo mała liczba ujemna (najmniejsza ze wszystkich możliwych)
smin=bardzo duża liczba dodatnia (największa ze wszystkich możliwych)

Pisząc dowolny program musisz przewidywać jakie wartości wprowadzi user.

0

dzieki, tak zrobilem :)

pozdrawiam

temat mozna zamknac/usunac :)

0

smin:=Low(integer);
smax:=High(integer);
=D

0

tfu! na odwrót =]

smin:=High(integer);
smax:=Low(integer);

0

a to juz ciekawostka :) thx

0

a co w przypadku jesli chcemy zrobic o samo dla typu zmiennoprzecinkowego, albo jakiegos innego?
Nie dla wszystkich typow istnieja funkcje zwracajace max z danego typu...

Ja szukajac max i min ustawiam wartosci poczatkowe rowne pierwszemu elementowi
badanego zestawu liczb.

begin
  max := tab[0];
  min := tab[0]
  for i := 0 to high(tab) do begin
    if tab[i] > max then max := tab[i];
    if tab[i] < min then min := tab[i];
  end;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1