Отсортировать каждый столбе матрицы с номером 2i по возрастанию элементов, а с номером 2i +1 по убыванию - Pascal ABC

Формулировка задачи:

Отсортировать каждый столбе матрицы с номером 2i по возрастанию элементов, а с номером 2i +1 по убыванию элементов методом вставки Все отсортировать по убыванию или возрастанию получается, а конкретно столбцы нет, думаю тут должен быть if then else Но куда его ставить и что должно быть условием мне не понятно
type mas=array [1..10] of integer;
    matr = array [1..10,1..10] of integer;
var a:matr;
    n,m:integer;
    b:mas;
    k:integer;
 
procedure VvodMatr(var x:matr; var n,m: integer );
var h:text;
k,j:integer;
begin
assign(h,'input.txt'); reset(h);
read(h,n,m);
for k:=1 to n do
  for j:=1 to m do read (h,x[k,j]);
  close(h);
  end;
 
 
  Procedure PrintMatr(var x: matr; n,m: integer );
  var h: text;
  k,j: integer;
  begin
  assign(h,'output.txt');
  rewrite(h);
  writeln(h,n,' ',m);
  for k:=1 to n do
  begin
  for j:=1 to m do write (h,x[k,j]:4);
  writeln(h);
  end;
  close(h);
  end;
  
 
 procedure MatrToMas(var x: matr; n,v:integer; var y : mas);
 var k: integer;
 begin
 for k:=1 to n do y[k]:=x[k,v];
 end;
 
procedure MasToMatr(var y: mas; var x: matr; n,v:integer);
          var k:integer;
          begin
          for k:=1 to n do x[k,v]:=y[k];
          end;
          
 
          procedure SortVs(var a:mas; n: integer);
          var
          i,j, temp : integer;
          begin
 
          for i:=1 to n do
          begin
          j:=i;
          while ((j>1) and(a[j]>a[j-1])) do //(a[j]<a[j-1]))  
          begin
          temp :=a[j]; a[j]:=a[j-1]; a[j-1]:= temp; j:=j-1;
          end;
          end
          end;
          
     {Основная программа:}
   begin
   VvodMatr (a,n,m);
   for k:=1 to m do
   begin
   MatrToMas(a,n,k,b);
   SortVs(b,n);
   MasToMatr(b,a,n,k);
   end;
   PrintMatr(a,n,m);
   end.

Код к задаче: «Отсортировать каждый столбе матрицы с номером 2i по возрастанию элементов, а с номером 2i +1 по убыванию - Pascal ABC»

textual
type mas=array [1..10] of integer; //столбец
     matr=array [1..10] of mas;//массив столбцов
procedure VvodMatr(var h:text; var x:matr; var n,m: integer);
var k,j:integer;
begin
assign(h,'input.txt');
reset(h);
read(h,n,m);
for k:=1 to n do  //записываем матрицу по столбцам
for j:=1 to m do read (h,x[j][k]);
close(h);
end;
Procedure PrintMatr(var h:text;x: matr; n,m: integer);
var k,j: integer;
begin
assign(h,'output.txt');
rewrite(h);
writeln(h,n,' ',m);
for k:=1 to n do  //выводим по строкам
 begin
  for j:=1 to m do  write (h,x[j][k],'  ');
  writeln(h);
 end;
close(h);
end;
procedure SortVsVz(var a:mas; n: integer);
var i,j,temp : integer;
begin
for i:=2 to n do
 begin
  temp:=a[i];
  j:=i-1;
  while (j>=1) and (a[j]>temp) do
   begin
    a[j+1]:=a[j];
    j:=j-1;
   end;
  a[j+1]:=temp
 end;
end;
procedure SortVsUb(var a:mas; n: integer);
var i,j,temp : integer;
begin
for i:=2 to n do
 begin
  temp:=a[i];
  j:=i-1;
  while (j>=1) and (a[j]<temp) do
   begin
    a[j+1]:=a[j];
    j:=j-1;
   end;
  a[j+1]:=temp;
 end;
end;
{Основная программа:}
var f:text;
    a:matr;
    n,m,i,j:integer;
begin
VvodMatr(f,a,n,m);
i:=1;
for j:=2 to m do
 begin
  if j=2*i then SortVsVz(a[j],n)
  else if j=2*i+1 then
   begin
    SortVsUb(a[j],n);
    i:=i+1;
   end;
 end;
PrintMatr(f,a,n,m);
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

7   голосов, оценка 3.857 из 5


СДЕЛАЙТЕ РЕПОСТ