Написать программу решения следующей задачи: Вычислить z=(s1+s2)/2 , где s1 – сумма положительных элементов массива X(15); s2 – сумма отрицательных элементов массива Y(20). Использовать подпрограмму НАЙТИ ОШИБКУ В КОДЕ:
program z_2;
var
x:array[1..100] of integer;
y:array[1..100] of integer;
z:real;
i,j,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]);
end;
for i:=1 to n do
if x[i]>0 then begin
s1:=s1+x[i];
end;
s2:=0;
for j:=1 to n do begin
write('y[',j,']='); readln(y[j]);
for j:=1 to n do
if y[j]<0 then begin
s2:=s2+y[j];
end;
begin
sums(s1,s2);
z:=(s1+s2)/2;
writeln('z=',z:4:4);
end.
напутано было со скобками(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.