Вывести на экран номер первой строки матрицы, в которой содержаться только положительные элементы - 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.

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

  1. Создается переменная m со значением 5.
  2. Создается переменная n со значением 10.
  3. Создается переменная a типа array[1..m,1..n] of integer.
  4. Создаются три байтовые переменные i, j, o1.
  5. Создается переменная pp типа set of byte.
  6. Выводится сообщение «Исходная матрица:».
  7. Запускается цикл for i:=1 to m do, внутри которого запускается цикл for j:=1 to n do.
  8. Внутри циклов выводятся значения элементов матрицы a[i,j] с помощью функции write(a[i,j]:4).
  9. После окончания внутреннего цикла выводится символ новой строки writeln.
  10. Запускается цикл for i:=1 to m do, внутри которого запускается цикл for j:=1 to n do.
  11. Внутри циклов проверяется условие if(a[i,j]<0)and(o1=0) then o1:=j. Если это условие истинно, то переменной o1 присваивается значение j.
  12. Если условие if a[i,j]>0 then pp:=j истинно, то переменной pp присваивается значение j.
  13. Если оба условия выполняются, то переменная mn обновляется, добавляя в себя значение i.
  14. Если условие if(o1=0)or(pp=0)then mn:=mn+[i] истинно, то выводится сообщение «В строках » и для каждого i из диапазона [1..m] выполняется проверка if i in mn then write(i,' '). Если условие истинно, то выводится пробел и значение i.
  15. Если условие if(o1=0)or(pp=0)then mn:=mn+[i] не выполняется, то выводится сообщение «В строках нет пар элементов для обмена».
  16. Выводится сообщение «Обмен в строках первого отрицательного и последнего положительного».
  17. Для каждой строки матрицы выводится значение элементов с помощью функции write(a[i,j]:4).
  18. Выводится символ новой строки writeln.
  19. Конец программы.

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

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