Показать сообщение отдельно
  #2  
Старый 21.05.2013, 09:26
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Grynyuk
Задание в массиве поменять местами 1 и мин элемент. Помогите найти ошибку. Если можно подскажите как использовать вместо стринггрид мемо для ввода и листбокс для вывода
Код Delphi
Код:
procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
min,k:string;
  begin
    for i:=0 to n-1 do
      begin
        stringgrid1.ColWidths[i]:=40;
        stringgrid2.ColWidths[i]:=40;
        stringgrid1.Cells[i,0]:=inttostr(i+1);
        stringgrid2.Cells[i,0]:=inttostr(i+1);
        stringgrid1.Cells[i,1]:=inttostr(random(101));
             min:=  stringgrid1.Cells[i,1];
 
            for j:=1 to n-1 do
                if   stringgrid1.Cells[j,1]<min then
                      begin min:=stringgrid1.Cells[2,1]; <--- у тебя минимальный элемент всегда во второй колонке?
                    end;
                    k:=  stringgrid1.Cells[1,1];
           stringgrid1.Cells[1,1]:=min;
           min:=k;                                       <--- и что потом со значением переменной min происходит? - ничего...
     end;
    stringgrid1.Width:=414;
    stringgrid2.Width:=414;
    label2.Visible:=false;
    stringgrid2.Visible:=false;
  end;
И зачем здесь вложенные циклы? Да, должно быть 2 цикла, но не вложенных, а идущие подряд: первый настраивает StringGrid, а второй ищет минимальное значение.
А в тех местах которые я прокомментировал: сначала сохраняешь в переменную min номер колонки с минимальным значением (а не само минимальное значение как ты пытаешься сделать), а потом в эту колонку StringGrid'а записываешь значение первой колонки (вместо того чтобы просто считывать это значение в переменную min).
Ответить с цитированием