Откорректировать середину программы. необходимо найти сумму элементов массива, расположенных между первым и вторым положительными элементами. моя программа: var a: array[1..100]of real; i,n,k,p: integer; s: real; begin assign(input,'input.txt'); assign(output,'output.txt'); reset(input); rewrite(output); readln(n); for i: =1 to n do read(a[i]); i: =1; while(i< =n)and(a[i]< =0) do i: =i+1; if i> n then writeln('0') else begin k: =i; i: =n; while(i> =1)and(a[i]< =0)do i: =i-1; if i< 1 then writeln('0') else begin for i: =k+1to p-1 do s: =s+a[i]; writeln(s: 0: 3); end; end; close(input); close(output); end.
for i := 1 to n do
read (a[i]);
i := 1;
while (i <= n) and (a[i] <= 0) do
i := i + 1;
if i > n then writeln ('0')
else
begin
k := i;
i := i + 1;
while (i <= n) and (a[i] <= 0) do
i := i + 1;
if i > n then writeln ('0')
else
begin
p := i;
for i := k + 1 to p - 1 do
s := s + a[i];
writeln(s:0:3);
end;
end;
Что я сделал: после нахождения первого элемента не надо идти в конец и с конца перебирать в другую сторону. Надо просто продолжить в том же направлении с того же места. И надо не забыть найденное значение сохранить в P - у Вас она вовсе не инициализировалась.