Удалить из матрицы 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.
Объяснение кода листинга программы
- Создается константа n, которая равна 5.
- Создается переменная A, которая представляет собой матрицу размером n на m.
- Выводится сообщение
Исходная матрица
. - Заполняется матрица A отрицательными числами.
- Вычисляется максимальное произведение отрицательных элементов столбца j.
- Если максимальное произведение равно 1, то присваивается переменной jmax значение 1.
- Если максимальное произведение больше значения переменной max, то присваивается max значение произведения, а jmax значение j.
- Выводится сообщение
Произведение отрицательных в столбце j=pr
. - Если jmax равно m, то m уменьшается на 1.
- Если jmax меньше m, то происходит перенос элементов из столбца jmax+1 в столбец jmax.
- Выводится сообщение
Удаление столбца с максимальным произведением
. - Выводится заполненная матрица A.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д