{Назначение: ввести массив А(N,M) и номер строки матрицы, которую нужно
 отсортировать по убыванию.
 Автор: Балашов Г.
 Дата: 12.03.2015}
Program Lab5;
uses CRT;
var
   A:array[1..5,1..5] of real;       {Рабочая матрица}
   N,M:byte;                         {Размерность матрицы}
   I,J:byte;                         {Счетчик строк/столбцов}
   TEMP:real;                        {Временная переменная}
   K:byte;                           {Номер сортированного столбца}
begin
   write('Введите кол-во строк матрицы: ');
   readln(N);
   write('Введите кол-во столбцов матрицы: ');
   readln(M);
   if ((N>0) and (N<=5) and (M>0) and (M<=5)) then
   begin
      writeln('Введите элемент матрицы: ');
      for I:=1 to N do
         for J:=1 to M do
            readln(A[I,J]);
      clrscr;
      if (K<=N) then
      begin
         writeln('Исходная матрица:');
         for I:=1 to N do
         begin
            for J:=1 to M do
               write(A[I,J]:7:2,' ');
            writeln;
         end;
         for K:=1 to N do
         for J:=1 to M do               {Счет по столбцам}
            for I:=1 to M-1 do          {Счет по строкам}
               if A[K,I]<A[K,I+1] then  {Проверка величины числа}
               begin
                  TEMP:=A[K,I+1];       {Присваивание элемента плавающей переменной}
                  A[K,I+1]:=A[K,I];     {Перемещение более низкого элемента}
                  A[K,I]:=TEMP;         {Переприсваиваем}
               end;
         writeln('Преобразованная матрица:');
         for I:=1 to N do
         begin
            for J:=1 to M do
               write(A[I,J]:7:2,' ');
            writeln;
         end;
      end
      else writeln('Введенной строки не существует.');
   end
   else writeln('Неверная размерность массива!');
   readln;
end.