в матрице (StringGrid) NxM сортировать элементы каждой строки в неубывающем порядке?Delphi сортировка Строка сетки
var
Form1: TForm1;
n,m:integer;
I:integer;
implementation
{$R *.dfm}
procedure TForm1.btNapraviClick(Sender: TObject);
begin
with StringGrid1 do
begin
n:=StrToInt(edN.text)+1;
m:=StrToInt(edM.text)+1;
ColCount:=n;
RowCount:=m;
for I:=0 to n-1 do Cells[I,0]:=IntToStr(I);
for I:=1 to m-1 do Cells[0,I]:=IntToStr(I);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var J,P,K:integer;
begin
with StringGrid1 do
begin
for I:=1 to n do
for J:=1 to m-1 do
for K:=J+1 to m do
begin
if StrToInt(Cells[I,J]) <= StrToInt(Cells[I,K]) then
begin
P:=StrToInt(Cells[I,J]);
Cells[I,J]:=(Cells[I,K]);
Cells[I,K]:=IntToStr(P);
end;
end;
end;
end;
Не знаете, в чём ваш вопрос. Почему вы тестируете для '<=' вместо просто '<'? если они равны, вы бесполезно меняете два равных значения. Кроме того, нет никаких оснований для того, чтобы P был целым числом или выполнял преобразование; просто сделайте строку. Вы знаете, что вы не определили var 'I: Integer;'? Я также использовал отладчик, чтобы гарантировать, что m и n не основаны на нулевом значении, и что у вас нет встроенной ошибки в этих внутренних циклах. –
Вы правы для <, моя вина. но ive объявляет I: целое, как глобальная переменная. – Malone