Определить, делится ли произведение на любой из элементов матрицы без остатка - Pascal ABC

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

найти произведение элементов, расположенных на побочной диагонали и выше её. Определить, делится ли это произведение на любой из элементов матрицы без остатка;
var m,c, n, i, j,p : integer;
s:real;
a:array[1..10,1..10]of integer;
b:array[1..10,1..10]of integer;
begin
write('Введите число строк: ');
readln(m);
write('Введите число столбцов: ');
readln(n);
for i:= 1 to m do
for j:= 1 to n do
a[i, j]:= random(51)-random(51);
writeln('** Исходная матрица **');
for i:= 1 to m do
begin
for j:= 1 to n do
write(a[i, j]:4);
writeln;
end;
p:=1;
for j:=1 to n do
for i:=1 to m-j+1 do
p:=p*a[i,j];
writeln('Произведение = ',p);
end.

Код к задаче: «Определить, делится ли произведение на любой из элементов матрицы без остатка - Pascal ABC»

textual
var n,i,j,p,k : integer;
    a:array[1..10,1..10]of integer;
begin
write('Введите размер матрицы n=');
readln(n);
for i:= 1 to n do
for j:= 1 to n do
a[i, j]:= random(51)-random(51);
writeln('** Исходная матрица **');
p:=1;
for i:= 1 to n do
 begin
  for j:= 1 to n do
   begin
    a[i,j]:=1+random(5);
    write(a[i,j]:4);
    if j<=n-i+1 then p:=p*a[i,j];
   end;
  writeln;
 end;
writeln('Произведение на побочной диагонали и выше ее=',p);
k:=0;
i:=1;
while(i<=n)and(k=0) do
 begin
  j:=1;
  while(j<=n)and(k=0)do
  if p mod a[i,j]<>0 then k:=1
  else inc(j);
  if k=0 then inc(i);
 end;
if k=0 then write('Произведение делится нацело на все элементы матрицы')
else write('Произведение не делится нацело на все элементы матрицы')
end.

6   голосов, оценка 4.500 из 5


СОХРАНИТЬ ССЫЛКУ