Сформировать массив из последних попавшихся положительных элементов каждой нечетной строки матрицы - Pascal ABC

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

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

Двумерный массив t состоит из m=6 строк и n=3 столбцов. Надо сформировать массив из последних попавшихся положительных элементов каждой нечетной строки и их индексов в исходной матрице, если положительных элементов нет, результат должен быть равен 0. Вот кусок програмки, элементы выводит, номер столбца правильный, а строки нет. Помогите пожалуйста найти ошибку.

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

textual
Листинг программы
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, которая формирует новый массив на основе исходной матрицы.

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

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