Откорректировать середину программы. необходимо найти сумму элементов массива, расположенных между первым и вторым положительными элементами. моя программа: 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.

Catlove333 Catlove333    3   03.06.2019 02:50    0

Ответы
ксе16 ксе16  03.07.2020 16:01
  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 - у Вас она вовсе не инициализировалась.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика