Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1

Узнай цену своей работы

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

Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1<n<=100, 1<m<=50) и упорядочивает элементы матрицы. Правило упорядочивания: первую половину массива по возрастанию, вторую - по убыванию.

Решение задачи: «Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1

textual
Листинг программы
  1. const nmax=100;
  2.       mmax=50;
  3. var a:array[1..nmax,1..mmax] of integer;
  4. var n,m,k,i,j,t:integer;
  5. begin
  6. randomize;
  7. repeat
  8. write('Количество строк четное число от 2 до ',nmax,' n=');
  9. readln(n);
  10. until(n in [2..nmax])and(n mod 2=0);
  11. repeat
  12. write('Количество столбцов от 2 до ',mmax,' m=');
  13. readln(m);
  14. until m in [2..mmax];
  15. writeln('Исходная матрица');
  16. for i:=1 to n do
  17.  begin
  18.   for j:=1 to m do
  19.    begin
  20.     a[i,j]:=random(50);
  21.     write(a[i,j]:3)
  22.    end;
  23.   writeln
  24.  end;
  25. writeln;
  26. k:=n div 2;
  27. for i:=1 to k*m-1 do
  28. for j:=i+1 to k*m do
  29. if a[(i-1) div m+1,(i-1) mod m+1]>a[(j-1) div m+1,(j-1) mod m+1] then
  30.  begin
  31.    t:=a[(i-1) div m+1,(i-1) mod m+1];
  32.    a[(i-1) div m+1,(i-1) mod m+1]:=a[(j-1) div m+1,(j-1) mod m+1];
  33.    a[(j-1) div m+1,(j-1) mod m+1]:=t;
  34.  end;
  35. for i:=1 to k*m-1 do
  36. for j:=i+1 to k*m do
  37. if a[(k*m+i-1) div m+1,(k*m+i-1) mod m+1]<a[(k*m+j-1) div m+1,(k*m+j-1) mod m+1] then
  38.  begin
  39.    t:=a[(k*m+i-1) div m+1,(k*m+i-1) mod m+1];
  40.    a[(k*m+i-1) div m+1,(k*m+i-1) mod m+1]:=a[(k*m+j-1) div m+1,(k*m+j-1) mod m+1];
  41.    a[(k*m+j-1) div m+1,(k*m+j-1) mod m+1]:=t;
  42.  end;
  43. writeln('Отсортированная матрица');
  44. for i:=1 to n do
  45.  begin
  46.   for j:=1 to m do
  47.   write(a[i,j]:3);
  48.   writeln
  49.  end;
  50. end.

Объяснение кода листинга программы

  1. const nmax=100;
    1. const mmax=50;
    2. var a:array[1..nmax,1..mmax] of integer;
    3. var n,m,k,i,j,t:integer;
    4. begin randomize; repeat write('Количество строк четное число от 2 до ',nmax,' n='); readln(n); until(n in [2..nmax])and(n mod 2=0); repeat write('Количество столбцов от 2 до ',mmax,' m='); readln(m); until m in [2..mmax]; writeln('Исходная матрица'); for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(50); write(a[i,j]:3) end; writeln end; writeln; k:=n div 2; for i:=1 to km-1 do for j:=i+1 to km do if a[(i-1) div m+1,(i-1) mod m+1]>a[(j-1) div m+1,(j-1) mod m+1] then begin t:=a[(i-1) div m+1,(i-1) mod m+1]; a[(i-1) div m+1,(i-1) mod m+1]:=a[(j-1) div m+1,(j-1) mod M+1]; a[(j-1) div m+1,(j-1) mod M+1]:=t; end; for i:=1 to km-1 do for j:=i+1 to km do if a[(km+i-1) div m+1,(km+i-1) mod M+1]<a[(km+j-1) div m+1,(km+j-1) mod M+1] then begin t:=a[(km+i-1) div m+1,(km+i-1) mod M+1]; a[(km+i-1) div M+1,(km+i-1) mod M+1]:=a[(km+j-1) div M+1,(km+j-1) mod M+1]; a[(km+j-1) div M+1,(km+j-1) mod M+1]:=t; end; end; writeln('Отсортированная матрица'); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:3); writeln end; end; end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы