Вывести на экран номер первой строки матрицы, в которой содержаться только положительные элементы - Pascal ABC
Формулировка задачи:
Дана такая задача: Задана матрица 5х10. Вывести на экран номер ее первой строчки, в которой содержаться только положительные элементы. Если такой нет - вывести 0.
Прошу помощи в решении данной задачи.
Решение задачи: «Вывести на экран номер первой строки матрицы, в которой содержаться только положительные элементы»
textual
Листинг программы
const m=5; n=10; var a:array[1..m,1..n] of integer; i,j,o1,pp:byte; x:integer; mn:set of byte; 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; mn:=[]; for i:=1 to m do begin o1:=0; pp:=0; for j:=1 to n do begin if(a[i,j]<0)and(o1=0) then o1:=j; if a[i,j]>0 then pp:=j; end; if(o1=0)or(pp=0)then mn:=mn+[i] else begin x:=a[i,o1]; a[i,o1]:=a[i,pp]; a[i,pp]:=x; end; end; writeln('Обмен в строках первого отрицательного и последнего положительного'); for i:=1 to m do begin for j:=1 to n do write(a[i,j]:4); writeln; end; if mn<>[] then begin write('В строках '); for i:=1 to m do if i in mn then write(i,' '); writeln('нет пар элементов для обмена'); end; end.
Объяснение кода листинга программы
- Создается переменная
m
со значением 5. - Создается переменная
n
со значением 10. - Создается переменная
a
типаarray[1..m,1..n] of integer
. - Создаются три байтовые переменные
i
,j
,o1
. - Создается переменная
pp
типаset of byte
. - Выводится сообщение «Исходная матрица:».
- Запускается цикл
for i:=1 to m do
, внутри которого запускается циклfor j:=1 to n do
. - Внутри циклов выводятся значения элементов матрицы
a[i,j]
с помощью функцииwrite(a[i,j]:4)
. - После окончания внутреннего цикла выводится символ новой строки
writeln
. - Запускается цикл
for i:=1 to m do
, внутри которого запускается циклfor j:=1 to n do
. - Внутри циклов проверяется условие
if(a[i,j]<0)and(o1=0) then o1:=j
. Если это условие истинно, то переменнойo1
присваивается значениеj
. - Если условие
if a[i,j]>0 then pp:=j
истинно, то переменнойpp
присваивается значениеj
. - Если оба условия выполняются, то переменная
mn
обновляется, добавляя в себя значениеi
. - Если условие
if(o1=0)or(pp=0)then mn:=mn+[i]
истинно, то выводится сообщение «В строках » и для каждогоi
из диапазона [1..m] выполняется проверкаif i in mn then write(i,' ')
. Если условие истинно, то выводится пробел и значениеi
. - Если условие
if(o1=0)or(pp=0)then mn:=mn+[i]
не выполняется, то выводится сообщение «В строках нет пар элементов для обмена». - Выводится сообщение «Обмен в строках первого отрицательного и последнего положительного».
- Для каждой строки матрицы выводится значение элементов с помощью функции
write(a[i,j]:4)
. - Выводится символ новой строки
writeln
. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д