Помогите откорректировать середину программы. Необходимо найти сумму элементов массива, расположенных между первым и вторым положительными элементами.
Моя программа:
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.
Answers & Comments
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 - у Вас она вовсе не инициализировалась.