Помощь - Поиск - Пользователи - Календарь
Полная версия: Сортировка таблицы по k-ому столбцу
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
NTL
Не могу понять, вроде алгоритмически все правильно.
Код

const n=3;
      m=2;
var i,j,z,T,B,k:integer;
a: array [1..n,1..m] of integer;
begin
for i:=1 to n do
  for j:=1 to m do
   read(a[i,j]);
writeln('Массив до сортировки: ');
for i:=1 to n do
   begin
      for j:=1 to m do write(a[i,j]:3);
      writeln;
   end;

    
k:=2;
for i:=1 to n-1 do
  for j:=i+1 to n do
    if a[i,k]>a[j,k] then
      begin
          T:=a[j,k];
          a[j,k]:=a[i,k];
          a[j,k]:=T;
          for z:=1 to m do
            if z=k then continue
            else
              begin
                  B:=a[j,z];
                  a[j,z]:=a[i,z];
                  a[j,z]:=B;
              end;
      end;
writeln;
writeln('Массив после сортировки: ');
for i:=1 to n do
   begin
      for j:=1 to m do write(a[i,j]:3);
      writeln;
   end;
end.
klem4
k:=2;

 for p := n downto 2 do
  for q := 1 to p - 1 do
   if a[q, k] < a[q + 1, k] then
    for j := 1 to m do begin
      T := a[q, j];
      a[q, j] := a[q + 1, j];
      a[q + 1, j] := T;
    end; 
NTL
Благодарствую good.gif

Добавлено через 11 мин.
Не. Это не то :)Сортировка таблицы, т.е. пусть дана след. матрица:
(Может просто неудачно выразился smile.gif Наверное, правильнее будет сортировка строк таблицы (матрицы) по возрастанию элементов k-ого столбца blink.gif )
Код
3 8         ->>>       4 2
4 2         ->>>       6 7
6 7         ->>>       3 8
volvo
const
  n = 3;
  m = 2;
type
  vector = array[1 .. m] of integer;

var
  i, j, k: integer;
  a: array [1 .. n] of vector;
  T: vector;

begin
  for i:=1 to n do
    for j:=1 to m do
      read(a[i,j]);

  writeln('Массив до сортировки: ');
  for i:=1 to n do begin
    for j:=1 to m do write(a[i,j]:3);
    writeln;
  end;

  k := 2;

  for i := 1 to n Do
    for j := n downto i + 1 do
      if a[pred(j)][k] > a[j][k] then begin
        T := a[pred(j)]; a[pred(j)] := a[j]; a[j] := T
      end;

  writeln;
  writeln('Массив после сортировки: ');
  for i:=1 to n do begin
    for j:=1 to m do write(a[i,j]:3);
    writeln;
  end;

end.

Так?
klem4
Цитата
сортировка строк таблицы (матрицы) по возрастанию элементов k-ого столбца


Ну так я это и написал ... строки сортируются по возрастанию/убыванию элементов в к-го столбца.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.