Показать сообщение отдельно
  #6  
Старый 29.12.2011, 11:54
TheVenom TheVenom вне форума
Прохожий
 
Регистрация: 29.12.2011
Сообщения: 31
Репутация: 10
По умолчанию

проблема состоит не в том чтобы найти наименьший элемент, а в том чтобы найти "следующий" наименьший элемент. У меня была идея сделать это с помощью цикла, так чтобы в конце цикла массив сокращался(т.е. наименьший элемент удалялся), но в этом случае программа по каким то причинам зацикливается, выводит ошибку или вообще выводит какие то левые цифры непонятно откуда. Вот мой код посмотрите, что с ним можно сделать...
Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
var
  byteArray  : Array of Byte;
  i:integer;
  min1,x1,yy1,z1: Integer;
  begin
    SetLength(byteArray, 5);
  for i := 0 to 4 do
  byteArray[i] := i * 5;
  byteArray[0] := StrToInt(Edit1.Text);
  byteArray[1] := StrToInt(Edit2.Text);
  byteArray[2] := StrToInt(Edit3.Text);
  byteArray[3] := StrToInt(Edit4.Text);
  byteArray[4] := StrToInt(Edit5.Text);
  z1:=0;

  min1:= byteArray[0];
for i := 1 to 4
do if byteArray[i] < min1 then min1 := byteArray[i];

if (min1 = byteArray[0]) then Edit1.Color:=clLime;
if (min1 = byteArray[1]) then Edit2.Color:=clLime;
if (min1 = byteArray[2]) then Edit3.Color:=clLime;
if (min1 = byteArray[3]) then Edit4.Color:=clLime;
if (min1 = byteArray[4]) then Edit5.Color:=clLime;

x1:= StrToInt(Edit21.Text);
if (min1 = byteArray[0]) then yy1:= StrToInt(Edit16.text);
if (min1 = byteArray[1]) then yy1:= StrToInt(Edit17.text);
if (min1 = byteArray[2]) then yy1:= StrToInt(Edit18.text);
if (min1 = byteArray[3]) then yy1:= StrToInt(Edit19.text);
if (min1 = byteArray[4]) then yy1:= StrToInt(Edit20.text);
z1:=x1-yy1-z1;
Label16.Caption:= IntToStr(z1);
end;
Админ: Пользуемся тегами для оформления кода!
Ответить с цитированием