Сформировать массив из последних попавшихся положительных элементов каждой нечетной строки матрицы - Pascal ABC
Формулировка задачи:
Решение задачи: «Сформировать массив из последних попавшихся положительных элементов каждой нечетной строки матрицы»
const m=6; n=3; type mtr=array[1..m,1..n] of integer; procedure obr(t:mtr; var s:mtr); var p,i,j:integer; begin {-----формирование массива-------} for i:=1 to m do begin p:=0; j:=n; while(j>=1)and(p=0)do if t[i,j]>0 then p:=1 else dec(j); if p=0 then begin s[i,1]:=0; s[i,2]:=0; s[i,3]:=0; end else begin s[i,1]:=t[i,j]; s[i,2]:=i; s[i,3]:=j; end; end; writeln('Последние положительные в строках и их индексы'); for i:=1 to m do begin for j:=1 to n do write(s[i,j]:4); writeln; end; end; var a,b:mtr; i,j:integer; begin randomize; writeln('Исходная матрица'); for i:=1 to m do begin for j:=1 to n do begin a[i,j]:=-10+random(21); write(a[i,j]:4); end; writeln; end; obr(a,b); end.
Объяснение кода листинга программы
В данном коде формируется массив из последних попавшихся положительных элементов каждой нечетной строки матрицы. Для этого используется цикл for, который проходит по каждой строке матрицы. Внутри цикла проверяется условие: если текущий элемент матрицы больше нуля, то он добавляется в новый массив. Если же текущий элемент меньше или равен нулю, то цикл продолжается до тех пор, пока не встретится положительный элемент, после чего записываются его индексы в новый массив. После завершения цикла выводится сообщение с последними положительными элементами и их индексами. Затем выводится исходная матрица, заполненная случайными числами, и вызывается процедура obr, которая формирует новый массив на основе исходной матрицы.