Помощь - Поиск - Пользователи - Календарь
Полная версия: Сортировка матрицы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Tay
Ребят помогите решить задачу
Упорядочить по возрастанию элементы каждой строки матрицы размером n на m.

Разделено из темы: Задачи -> Диагонали матрицы
volvo
Посмотрите вот это: FAQ: Как поменять местами строки в матрице. Я понимаю, что в этой задаче нужно немного другое, но если матрица будет задана так, как описано по линку, то с каждой ее строкой можно будет просто работать как с массивом безо всяких преобразований (кстати, и сортировать лобым из этих методов - тоже :yes: )
Tay
Цитата(volvo @ 5.04.05 14:10)
Посмотрите вот это: FAQ: Как поменять местами строки в матрице. Я понимаю, что в этой задаче нужно немного другое, но если матрица будет задана так, как описано по линку, то с каждой ее строкой можно будет просто работать как с массивом безо всяких преобразований (кстати, и сортировать лобым из этих методов - тоже :yes: )

Я пробовал но у меня не получилось.
На данный момент мои познания в Паскале довольно малы чтобы решить её.
Если не трудно реши её, буду очень благодарен.
volvo
Ну ведь все готово, только соединить в одну программу...
Код
const
 size_row = 5; { число строк }
 size_col = 6; { число столбцов }

type
 tvector = array[1 .. size_col] of integer;
 tmatrix = array[1 .. size_row] of tvector;

procedure bubble(var vec: tvector;
         n: integer);
var i, j, T: Integer;
begin
 for i := 1 to n do
   for j := n downto i+1 do
     if vec[Pred(j)] > vec[j] then { < } begin
       T := vec[Pred(j)]; vec[Pred(j)] := vec[j]; vec[j] := T
     end
end;

procedure print(var mx: tmatrix);
var i, j: integer;
begin
 for i := 1 to size_row do begin
   for j := 1 to size_col do
     write(mx[i][j]:4);
   writeln
 end;
end;

var
 mx: tmatrix;
 i, j: integer;
begin

 for i := 1 to size_row do
   for j := 1 to size_col do
     mx[i][j] := random(100);
 writeln('до сортировки'); print(mx);

 for i := 1 to size_row do
   bubble(mx[i], size_col);

 writeln('после сортировки'); print(mx);

end.
klem4
Код

{...}
procedure bubble;
var flag:boolean;
   t:integer;
begin
  repeat
     flag:=true;
     for j:=1 to m-1 do
      if not(x[i,j]<=x[i,j+1]) then
       begin
          t:=x[i,j];
          x[i,j]:=x[i,j+1];
          x[i,j+1]:=t;
          flag:=false;
       end;
  until flag;
end;
{...}
for i:=1 to n do
    bubble;
{...}


вот_и_все


одновременно ;)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.