Помогите откорректировать середину программы. Необходимо найти сумму элементов массива,...

0 голосов
24 просмотров

Помогите откорректировать середину программы. Необходимо найти сумму элементов массива, расположенных между первым и вторым положительными элементами.
Моя программа:
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;<br>if i>n then writeln('0')
else begin
k:=i;
i:=n;
while(i>=1)and(a[i]<=0)do i:=i-1;<br>if i<1 then writeln('0')<br>else begin
for i:=k+1to p-1 do s:=s+a[i];
writeln(s:0:3);
end;
end;
close(input);
close(output);
end.


Информатика (529 баллов) | 24 просмотров
0

да

Дан 1 ответ
0 голосов
Правильный ответ

  readln(n);
  for i := 1 to n do
    read (a[i]);
  i := 1;
  while (i <= n) and (a[i] <= 0) do<br>    i := i + 1;
  if i > n then writeln ('0')
  else
  begin
    k := i;
    i := i + 1;
    while (i <= n) and (a[i] <= 0) do<br>      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 - у Вас она вовсе не инициализировалась.

(4.6k баллов)