Помогите откорректировать середину программы. Необходимо найти сумму элементов массива, расположенных между первым и вторым положительными элементами.Моя программа:var a:array[1..100]of real;i,n,k,p:integer;s:real;beginassign(i...

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