Заменить максимальный элемент каждой строки матрицы на противоположный - Pascal (80574)

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

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

Дан двумерный массив размером n*m, заполненный случайным образом. 1. Заменить максимальный элемент каждой строки на противоположный. 2. Вставить после всех столбцов, содержащий максимальный элемент столбцов из нулей. 3. Удалить все столбцы, в которых есть отрицательный элемент. 4. Поменять местами первый и последний столбцы. все в одной программе нужно

Решение задачи: «Заменить максимальный элемент каждой строки матрицы на противоположный»

textual
Листинг программы
  1. const nmax=10;
  2. var a:array[1..nmax,1..2*nmax] of integer;
  3.     m,n,i,j,jmx,k:byte;
  4.     mx,x:integer;
  5. begin
  6. randomize;
  7. repeat
  8. write('Количество строк от 2 до ',nmax,' n=');
  9. readln(n);
  10. until n in [2..nmax];
  11. repeat
  12. write('Количество столбцов от 2 до ',nmax,' m=');
  13. readln(m);
  14. until m in [1..nmax];
  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(20);
  21.     write(a[i,j]:4);
  22.    end;
  23.   writeln;
  24.  end;
  25. {пункт 1}
  26. for i:=1 to n do
  27.  begin
  28.   jmx:=1;
  29.   for j:=1 to m do
  30.   if a[i,j]>a[i,jmx] then jmx:=j;
  31.   a[i,jmx]:=-a[i,jmx];
  32.  end;
  33. writeln('Замена максимальных в строках на противположные');
  34. for i:=1 to n do
  35.  begin
  36.   for j:=1 to m do
  37.   write(a[i,j]:4);
  38.   writeln;
  39.  end;
  40. {пункт 2}
  41. mx:=a[1,1];
  42. for i:=1 to n do
  43. for j:=1 to m do
  44. if a[i,j]>mx then mx:=a[i,j];
  45. writeln('Максимальный элемент матрицы=',mx);
  46. j:=1;
  47. while j<=m do
  48.  begin
  49.   i:=1;
  50.   k:=0;
  51.   while(i<=n)and(k=0) do
  52.   if a[i,j]=mx then k:=1
  53.   else inc(i);
  54.   if k=1 then
  55.    begin
  56.     inc(m);
  57.     if j=m-1 then
  58.     for i:=1 to n do
  59.     a[i,m]:=0
  60.     else
  61.      begin
  62.       for k:=m downto j+2 do
  63.       for i:=1 to n do
  64.       a[i,k]:=a[i,k-1];
  65.       for i:=1 to n do
  66.       a[i,j+1]:=0;
  67.      end;
  68.     inc(j,2);
  69.    end
  70.   else inc(j);
  71.  end;
  72. writeln('Вставка столбцов из 0 за столбцами с максимальным');
  73. for i:=1 to n do
  74.  begin
  75.   for j:=1 to m do
  76.   write(a[i,j]:4);
  77.   writeln;
  78.  end;
  79. {пункт 3}
  80. j:=1;
  81. while j<=m do
  82.  begin
  83.   k:=0;
  84.   i:=1;
  85.   while(i<=n)and(k=0) do
  86.   if a[i,j]<0 then k:=1
  87.   else inc(i);
  88.   if k=1 then
  89.    begin
  90.     if j<m then
  91.      begin
  92.       for k:=j to m-1 do
  93.       for i:=1 to n do
  94.       a[i,k]:=a[i,k+1];
  95.      end;
  96.     dec(m);
  97.    end
  98.   else inc(j);
  99.  end;
  100. writeln('Удаление столбцов с отрицательными элементами');
  101. for i:=1 to n do
  102.  begin
  103.   for j:=1 to m do
  104.   write(a[i,j]:4);
  105.   writeln;
  106.  end;
  107. {пункт 4}
  108. for i:=1 to n do
  109.  begin
  110.   x:=a[i,1];
  111.   a[i,1]:=a[i,m];
  112.   a[i,m]:=x;
  113.  end;
  114. writeln('Обмен первого и последнего столбцов');
  115. for i:=1 to n do
  116.  begin
  117.   for j:=1 to m do
  118.   write(a[i,j]:4);
  119.   writeln;
  120.  end;
  121. end.

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

  1. Объявляются переменные:
    • nmax - константа, равная 10.
    • a - матрица целых чисел размером от 1 до nmax строк и от 1 до 2*nmax столбцов.
    • m, n, i, j, jmx, k, mx, x - целочисленные переменные.
    • randomize - процедура инициализации генератора случайных чисел.
  2. Вводится количество строк и столбцов для матрицы с помощью команд readln и write.
  3. Генерируется матрица из случайных чисел и выводится на экран.
  4. Поочередно для каждой строки происходит:
    • Поиск максимального элемента в строке
    • Замена найденного максимального элемента на противоположный
    • Вывод измененной строки на экран
  5. Находится максимальный элемент в матрице, затем происходит вставка столбцов из 0 за столбцами с максимальными элементами.
  6. Удаляются столбцы с отрицательными элементами.
  7. Происходит обмен первого и последнего столбцов матрицы.
  8. Итоговая матрица выводится на экран.

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


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

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

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

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

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

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