что-то типа этого:
const n = 8, m = 8;
var
A: array[1..n,1..m] of integer;
i, j, sum, product: integer;
isnotnull: boolean;
begin
randomize;
writeln('Случайная матрица:'); for i:=1 to n do begin
for j:=1 to m do begin
A[i,j] := random(51) - 25;
write(A[i,j]:5);
end;
writeln;
end; sum := 0;
for i:=1 to n do
if A[i,n-i+1] < 0 then
sum := sum + A[i,n-i+1];
writeln('Сумма отрицательных элементов побочной диагонали = ', sum); product := 1;
isnotnull := False;
for i:=1 to n-1 do
for j:=2 to n do
if (j > i) and (A[i,j] <> 0) then begin
isnotnull := True;
product := product * A[i,j];
end;
if isnotnull
writeln('Произведение ненулевых элементов в области выше главной диагонали = ', product)
else
writeln('Ненулевых элементов в области выше главной диагонали нет.', product); readln;
end.
1) 5
2) 9
3) 9
4) 10
алгоритм простой, представим число n-1 (т.к. ноль не учитывается) в качестве двойчной последовательности, для числа n=32 это будет 11111 дальнейший алгоритм прост, рассмотрим его на примере, задумано число 26:
1) проверяем правый регист (*0000 = 16), задаем вопрос "задуманое число больше 16?", ответ "да", значит первы регистр 1
2) проверяем следующий (1*000=24), задаем вопрос "задуманое число больше 24?", ответ "да", значит регистр 1
3) проверяем следующий (11*00=28), задаем вопрос "задуманое число больше 28?", ответ "нет", значит регистр 0
4)проверяем следующий (110*0=26), задаем вопрос "задуманое число больше 26?", ответ "нет", значит регистр 0
5) проверяем следующий (1100*=25), задаем вопрос "задуманое число больше 25?", ответ "да", значит регистр 1
итого получаем задуманное число в двоичной форме 11001 = 25, но т.к. мы не учитываем 0, то к этому числу надо прибавить 1, итого задусманное число 26
var k, n, a, amax: integer;
begin
amax:=0;
readln(n);
for k:=1 to n do
begin
readln(a);
if (a mod 6 = 0) and (a>amax) then
amax:=a;
end;
writeln(amax);
end.