Написать программу решения следующей задачи: Вычислить 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.

tahliaderma tahliaderma    3   09.06.2021 00:54    2

Ответы
diana9996 diana9996  09.07.2021 01:50

напутано было со скобками(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.

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика