Удалить из матрицы A(n,m) столбец с максимальным произведением его отрицательных элементов - Pascal

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

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

Удалить из матрицы A(n,m) столбец с максимальным произведением его отрицательных элементов

Считает только строчку, а нужно столбец. Как переделать, что изменить не пойму. И как удалить столбец? Вот набросок.
Const n=5; m=5;
Var A:array[1..n,1..m] of integer;
    i,j,imax:integer;
    max,pr:longint;
Begin
    max:=0;
    For i:=1 to n do
     Begin
      pr:=1;
      For j:=1 to m do
       Begin
        A[i,j]:=random(25)-10;
        write(A[i,j]:3);
          if A[i,j]<0 then
            begin
              pr:=pr*A[i,j];
            end;
       End;
      writeln;
      if pr>max then 
       Begin
        max:=pr;
        imax:=i;
       End;
     End;
    writeln(imax,'  ',max);
End.

Решение задачи: «Удалить из матрицы A(n,m) столбец с максимальным произведением его отрицательных элементов»

textual
Листинг программы
Const n=5;
Var A:array[1..n,1..n] of integer;
    m,i,j,k,jmax:integer;
    max,pr:longint;
Begin
m:=n;
writeln('Исходная матрица');
For i:=1 to n do
 Begin
  For j:=1 to m do
   Begin
    A[i,j]:=-10+random(25);
    write(A[i,j]:4);
   End;
  writeln;
 end;
for j:=1 to m do
 begin
  pr:=1;
  k:=0;
  for i:=1 to n do
  if a[i,j]<0 then
   begin
    k:=1;
    pr:=pr*a[i,j];
   end;
  if k=0 then pr:=0;
  if j=1 then
   begin
    max:=pr;
    jmax:=1
   end
  else if pr>max then
   begin
    max:=pr;
    jmax:=j;
   End;
  writeln('Произведение отрицательных в столбце ',j,'=',pr);
 End;
writeln('Столбец с максимальным произведением ',jmax,' призведение=',max);
if jmax=m then m:=m-1
else
 begin
  for j:=jmax to m-1 do
  for i:=1 to n do
  a[i,j]:=a[i,j+1];
  m:=m-1;
 end;
writeln('Удаление столбца смаксимальным произведением');
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
End.

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

  1. Создается константа n, которая равна 5.
  2. Создается переменная A, которая представляет собой матрицу размером n на m.
  3. Выводится сообщение Исходная матрица.
  4. Заполняется матрица A отрицательными числами.
  5. Вычисляется максимальное произведение отрицательных элементов столбца j.
  6. Если максимальное произведение равно 1, то присваивается переменной jmax значение 1.
  7. Если максимальное произведение больше значения переменной max, то присваивается max значение произведения, а jmax значение j.
  8. Выводится сообщение Произведение отрицательных в столбце j=pr.
  9. Если jmax равно m, то m уменьшается на 1.
  10. Если jmax меньше m, то происходит перенос элементов из столбца jmax+1 в столбец jmax.
  11. Выводится сообщение Удаление столбца с максимальным произведением.
  12. Выводится заполненная матрица A.

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


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

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

11   голосов , оценка 3.818 из 5
Похожие ответы