Показать сообщение отдельно
  #30  
Старый 04.01.2012, 03:53
TheVenom TheVenom вне форума
Прохожий
 
Регистрация: 29.12.2011
Сообщения: 31
Репутация: 10
Восклицание

По идеи, должно быть так: находим индекс минимального значения в массиве, производим некоторые операции, затем удаляем минимум из массива и ищем новый минимум в получившемся массиве. И так до тех пор когда z1 станет равно нулю или меньше нуля.
У меня получился вот такой код:
Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
var
  byteArray  : Array of integer;
  i:integer;
  min1,x1,yy1,z1: Integer;
begin
  SetLength(byteArray, 5);
  for i := 0 to (Length(byteArray)-1) do
    begin
      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);
    end;
  z1:=0;
  while z1 > 0 do
  begin
    min1:= 0;
    for i := 1 to (Length(byteArray)-1) do if byteArray[i] < byteArray[min1] then min1 := i;
    x1:= StrToInt(Edit21.Text);
    if (min1 = 0) then
    begin
      Edit1.Color:=clLime;
      yy1:= StrToInt(Edit16.text);
      z1:=x1-yy1-z1;
    end;
    if (min1 = 1) then
    begin
      Edit2.Color:=clLime;
      yy1:= StrToInt(Edit17.text);
      z1:=x1-yy1-z1;
    end;
    if (min1 = 2) then
    begin
      Edit3.Color:=clLime;
      yy1:= StrToInt(Edit18.text);
      z1:=x1-yy1-z1;
    end;
    if (min1 = 3) then
    begin
      Edit4.Color:=clLime;
      yy1:= StrToInt(Edit19.text);
      z1:=x1-yy1-z1;
    end;
    if (min1 = 4) then
    begin
      Edit5.Color:=clLime;
      yy1:= StrToInt(Edit20.text);
      z1:=x1-yy1-z1;
    end;
    for i := min1 to Length(byteArray) - 2 do byteArray[i] := byteArray[i + 1];
    SetLength(byteArray, Length(byteArray) - 1);
  end;
  Label16.Caption:= IntToStr(z1);
end;
Что в нем не так?
Ответить с цитированием