Двумерный массив. Найти произведение всех элементов каждого столбца массива - Turbo Pascal

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

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

Дан двухмерный массив размером M x N. Найти произведение всех элементов каждого столбца массива. Из первых четырех строк массива сформировать четыре новых вектора (одномерные массивы). Преобразовать каждый из них по правилу - всем элементам, следующим за минимальным элементом присвоить значение минимального элемента. Никак не получается присвоить всем элементам, следующим за минимальным элементом присвоить значение минимального элемента. Помогите кто чем может...

Решение задачи: «Двумерный массив. Найти произведение всех элементов каждого столбца массива»

textual
Листинг программы
uses crt;
const nmax=20;
type matr=array [1..nmax,1..nmax] of integer;
     mas=array [1..nmax] of integer;
var a: matr;
    a1,a2,a3,a4: mas;
    n,m: byte;
    
procedure Vvod (var z: matr; var ri,rj: byte);
var i,j: byte;
begin
repeat
write('Kol-vo strok, ne menee 4, ne bolee ',nmax,', n='); readln(ri);
until ri in [4..nmax];
repeat
write('Kol-vo stolbzov, ne bolee ',nmax,', n='); readln(rj);
until rj in [1..nmax];
writeln('Vvedite elementy matrizy:');
for i:=1 to ri do
    for j:=1 to rj do
        begin
        write('a[',i,',',j,']='); readln(z[i,j]);
        end;
end;
 
procedure Vivod (z: matr; ri,rj: byte);
var i,j: byte;
begin
writeln('Ischodnaja matriza');
for i:=1 to ri do
    begin
    for j:=1 to rj do
        write(z[i,j]:4);
    writeln;
    end;
end;
 
procedure Vivod1M (c: char; z: mas; rj: byte);
var j: byte;
begin
writeln('Massiv ',c);
for j:=1 to rj do
    write(z[j]:4);
writeln;
end;
 
procedure MakeArray (ns: byte; x: matr; var y: mas; rj: byte);
var j: byte;
begin
for j:=1 to rj do
    y[j]:=x[ns,j];
end;
 
function Jmin (z: mas; rj: byte): byte;
var j,jm: byte;
begin
jm:=1;
for j:=1 to rj do
    if z[j]<z[jm] then jm:=j;
Jmin:=jm;
end;
 
procedure Zamena (var z: mas; rj: byte);
var j: byte; g: integer;
begin
g:=z[Jmin(z,rj)];
if Jmin(z,rj)<rj then
   for j:=Jmin(z,rj)+1 to rj do
       z[j]:=g;
end;
 
begin
Vvod (a,n,m);
clrscr;
Vivod (a,n,m);
MakeArray (1,a,a1,m);
MakeArray (2,a,a2,m);
MakeArray (3,a,a3,m);
MakeArray (4,a,a4,m);
writeln('Massivy do preobrazovania');
Vivod1M ('1',a1,m);
Vivod1M ('2',a2,m);
Vivod1M ('3',a3,m);
Vivod1M ('4',a4,m);
Zamena (a1,m);
Zamena (a2,m);
Zamena (a3,m);
Zamena (a4,m);
writeln('Massivy posle zameny');
Vivod1M ('1',a1,m);
Vivod1M ('2',a2,m);
Vivod1M ('3',a3,m);
Vivod1M ('4',a4,m);
readln;
end.

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

Код написан на языке Turbo Pascal. Задача заключается в нахождении произведения всех элементов каждого столбца двумерного массива. В первой части кода объявлены необходимые переменные и типы данных. Далее идет процедура Vvod, которая считывает от пользователя количество строк и столбцов массива, а затем считывает сами элементы массива. Затем следует процедура Vivod, которая выводит введенные элементы массива. Далее объявлены три процедуры для работы с массивом: Vivod1M, MakeArray и Zamena. Затем идет функция Jmin, которая находит минимальный элемент в заданном столбце массива. И, наконец, последняя часть кода выводит итоговые массивы и производит замену элементов в одном из столбцов. В конце программы предлагается ввести данные для последнего столбца и произвести замену элементов в этом столбце.

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


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

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

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