напутано было со скобками(Begin - end) и убрал два цикла
program z_2;
var
x:array[1..100] of integer;
y:array[1..100] of integer;
z:real;
i,n:integer;
s1,s2:integer;
procedure sums(var s1,s2:integer);
begin
s1:=0;
write ('n=');
readln(n);
for i:=1 to n do begin
write('x[',i,']=');
readln(x[i]);
if x[i]>0 then s1:=s1+x[i];
end;
s2:=0;
for i:=1 to n do begin
write('y[',i,']=');
readln(y[i]);
if y[i]<0 then s2:=s2+y[i];
end;
end;
begin
sums(s1,s2);
z:=(s1+s2)/2;
writeln('z=',z:4:4);
end.
(*2 вариант немного модифицированный*)
program z_2;
const
n=15;
m=20;
var
x:array[0..n-1] of integer;
y:array[0..m-1] of integer;
z:real;
i, s1, s2, a,b :integer;
function sums(s : array of integer; k, p :integer): integer;
begin
sums := 0;
for i:=0 to k-1 do
if p*s[i]>0 then sums:=sums + s[i];
end;
begin
for i:=0 to n-1 do begin
write('x[',i+1,']=');
readln(x[i]);
end;
for i:=0 to m-1 do begin
write('y[',i+1,']=');
readln(y[i]);
end;
z:=(sums(x, n, 1) + sums(y, m, -1))/2;
writeln('z=',z:4:4);
end.
Объяснение:
# подключаем модуль, чтобы в ручную не вводить матрицу
from random import randint
# вводим размерность матрицы
n=int(input('Введите n: '))
# заполняем матрицу случайными числами в диапазоне (-20,20)
a=[[randint(-20,20) for j in range(n)] for i in range(n)]
# печатаем матрицу построчно, чтобы было понятно и красиво
for i in a: print(i)
# обнуляем счётчик, который будет считать количество элементов
s=0
# запускаем цикл
for i in range (n):
# проверяем элемент главной диагонали матрицы.
if a[i][i]>0:
# если он положительный увеличиваем счётчик на количество элементов в строке матрицы
s+=n
# выводим количество подсчитанных элементов
print(s)