Цитата:
Сообщение от 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).