Здравствуйте всем, какой сегодня — 1 августа и вот с утра как и обещал урок по замене строк в TStringGrid местами, в строке, в которой максимальный элемент матрицы и строкой, в которой минимальный элемент матрицы. В общем Вам тут пригодится наш первый урок по замене строк, так как я там все подробно описал как поменять строки местами, здесь все тоже самое, только нам в начале необходимо найти минимальный и максимальный элементы матрицы, запомнить номера их строк, то есть строк, в которых они находятся, затем в новый массив записать строку с максимальным элементом или строку с минимальным элементом и произвести замену по алгоритму, что я описывал в первой части. Как находится минимальный и максимальный элементы — очень просто, обычным сравнением, задаем им начальные сперва значения, а потом каждое значение матрицы сравниванием с максимумом и минимумом.
На форме у меня
- TStringGrid
- TButton
Не забываем в свойстве TStringGrid - Options-goEditing - установить в True. А в FixedCols и FixedRows я установил в 0. Далее на кнопку, на событие OnClick я написал следующий код
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i,j,max,min,min_index,max_index,k:integer;
a:array[1..100] of integer;
begin
try
k:=1;
max_index:=0;
min_index:=0;
max:=StrToInt(StringGrid1.Cells[0,0]);
min:=StrToInt(StringGrid1.Cells[0,0]);
for i:=0 to StringGrid1.RowCount-1 do
begin
for j:=0 to StringGrid1.ColCount-1 do
begin
if StrToInt(StringGrid1.Cells[j,i])>max then
begin
max:=StrToInt(StringGrid1.Cells[j,i]);
max_index:=i;
end;
if StrToInt(StringGrid1.Cells[j,i])<min then
begin
min:=StrToInt(StringGrid1.Cells[j,i]);
min_index:=i;
end;
end;
end;
if min_index=max_index then
begin
ShowMessage('Error, Sorry');
exit;
end;
for i:=0 to StringGrid1.ColCount-1 do
begin
a[k]:=StrToInt(StringGrid1.Cells[i,max_index]);
inc(k);
end;
for i:=0 to StringGrid1.ColCount-1 do
begin
StringGrid1.Cells[i,max_index]:=StringGrid1.Cells[i,min_index];
StringGrid1.Cells[i,min_index]:=IntToStr(a[i+1]);
end;
except
on e:Exception do
end;
end;
Все мы это проходили с Вами уже, так, что тут уже ничего сложного нету. В качестве задания на дом, можете сделать тоже самое только со столбцами.