Есть stringgrid. При нажатии на кнопку некоторые элементы в ней изменяются. Надо создать цикл, который будет изменять эти элементы до тех пор, пока все они не станут равными. Если точнее, в конце во всех ячейках должна находиться буква 'a'. Пока что приходиться самому кликать на кнопку много раз, пока не увижу, что все ячейки приняли значение a.
Вот код кнопки:
Код:
procedure TForm1.btn1Click(Sender: TObject); //Кнопка Старт
var
i, j, k, n, ves: Integer;
e, s, MinCvet, MaxCvet: string;
begin
e:=CoordChislMinEl(strngrd1); //Координаты минимального значения в матрице (числа)
s:=CoordMinEl(strngrd1); //Координаты минимального значения в матрице (ребро)
ves:=MinEl(strngrd1); //Вес минимального ребра
if strngrd2.Cells[1,StrToInt(e[2])] = strngrd2.Cells[1,StrToInt(e[4])] then //Если цвета ребер одинаковые (ребро образует цикл)
begin
strngrd1.Cells[StrToInt(e[4]),StrToInt(e[2])]:=''; //Исключаем рассмотренный ребра из цикла
strngrd1.Cells[StrToInt(e[2]),StrToInt(e[4])]:='';
end
else
begin
MinCvet:=Min(strngrd2.Cells[1, StrToInt(e[2])], strngrd2.Cells[1, StrToInt(e[4])]); //Выбираем меньший цвет из двух
MaxCvet:=Max(strngrd2.Cells[1, StrToInt(e[2])], strngrd2.Cells[1, StrToInt(e[4])]); //Выбираем больший цвет из двух
for j:=1 to strngrd2.RowCount-1 do
if strngrd2.Cells[1,j] = MaxCvet then
strngrd2.Cells[1,j]:=MinCvet;
lbl1.Caption:= lbl1.Caption + ' ' + s; //Вписываем ребро в остов
lbl3.Caption:= IntToStr(StrToInt(lbl3.Caption)+ves); //Подсчитывем общий вес ребер в остове
strngrd1.Cells[StrToInt(e[4]),StrToInt(e[2])]:=''; //Исключаем рассмотренный ребра из цикла
strngrd1.Cells[StrToInt(e[2]),StrToInt(e[4])]:='';
end;
end;
Админ: Пользуемся тегами для оформления кода!