var a: array[1..m, 1..n] of integer; i, j, t: integer; p: longint;
begin Randomize; Writeln('Исходный массив'); p := 1; for i := 1 to m do begin for j := 1 to n do begin a[i, j] := Random(19) - 9; Write(a[i, j]:3); if (abs(a[i, j]) < 1) or (abs(a[i, j]) > 5) then p := p * a[i, j] end; Writeln end; Writeln('Произведение элементов с модулем вне [1;5] равно ', p) end.
Тестовое решение: Исходный массив -8 2 7 -3 -8 5 1 -4 -3 6 9 6 Произведение элементов с модулем вне [1;5] равно 145152
Современные версии программного обеспечения (и в том числе, для языка Паскаль) позволяют в короткие сроки создавать очень короткие, наглядные и эффективные решения.
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016 begin var a:=ArrRandom(20,-99,99); a.Println; a.Where(x->x<0).Concat(a.Where(x->x>=0)).Println end.
Замечание: Если стоит задача получить именно массив, а потом его вывести, можно написать так: // PascalABC.NET 3.1, сборка 1250 от 28.05.2016 begin var a:=ArrRandom(20,-99,99); a.Println; a:=a.Where(x->x<0).Concat(a.Where(x->x>=0)).ToArray; a.Println end.
20785
Объяснение: