Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > матрица 3*4(сортировка),перерыл все не могу понять


Автор: Toen 30.11.2010, 22:51
Доброго дня суток! Хочу попросить помощи в написании программы на Делфи, перерыл много форумов вроде как и много описано задач по матрицам но все же не могу понять...Пожалуйста помогите на примере данном ниже и опишите по подробнее как все делается т.к. Делфи дается мне тяжеловато.
Задача:Дана матрица целых чисел размером 4x3.  Отсортировать каждую строку матрицы по возрастанию.  Вывести содержимое матрицы до обработки  и после обработки.
Как я понял на форме должны быть 2 элемента стрингрида и 1 кнопка. Буду благодарен всем кто пожелает помощь!(хотелось бы подробное описание для понимания программы)

Автор: Toen 1.12.2010, 11:24
procedure TForm1.Button1Click(Sender: TObject);
   var
 x:array[1..4,1..3] of integer;
 i,ii,jj,j,aa:integer;
begin
    randomize;
 for i:=1 to 4 do
 for j:=1 to 3 do
     begin
 x[i,j]:=random(100);
        StringGrid1.Cells[j-1,i-1]:=IntToStr(x[i,j]);
    end;
for ii:=1 to 4 do
for jj:=1 to 3 do
for i:=ii to 4 do
for j:=jj to 3 do
if x[ii,jj]>x[i,j] then  begin aa:=x[ii,jj]; x[ii,jj]:= x[i,j]; x[i,j]:=aa; end;
 for i:=1 to 4 do
 for j:=1 to 3 do
     begin
        StringGrid2.Cells[j-1,i-1]:=IntToStr(x[i,j]);
    end;
end;
Сделал программу выше дан текст, но сортировка происходит по всей матрице а мне нужно по строчно,помогите пожалуиста как сделать что бы сортировка осуществлялась по строкам

Автор: remax 1.12.2010, 11:41
Код

procedure TForm1.Button1Click(Sender: TObject);
   var
 x:array[1..4,1..3] of integer;
 i,ii,jj,j,aa:integer;
begin
 randomize;
 for i:=1 to 4 do
    for j:=1 to 3 do
     begin
        x[i,j]:=random(100);
        StringGrid1.Cells[j-1,i-1]:=IntToStr(x[i,j]);
    end;
for ii:=1 to 4 do    // Перебор строк
  for jj:=1 to 2 do  // Перебор столбцов 
    for j:=jj+1 to 3 do
       if x[ii,jj]>x[ii,j] then  
          begin 
             aa:=x[ii,jj]; 
             x[ii,jj]:= x[ii,j]; 
             x[ii,j]:=aa; 
          end;
 for i:=1 to 4 do
   for j:=1 to 3 do
        StringGrid2.Cells[j-1,i-1]:=IntToStr(x[i,j]);
end;

Автор: Toen 1.12.2010, 15:59
спасибо я уже разобрался сам=)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)