Ребят помогите, задали на дом задачу решить,а я уже себе голову сломал(((

1

Ответы и объяснения

2013-06-20T23:43:45+04:00

uses crt;
var
{последовательность эл прогрессии будем записывать в массив b}
  c:array [1..50] of integer;
  b:array [1..66] of integer;
  n:integer;{размер массива}
  i ,j:integer;
  k,d:integer;{счетчик эл в прогрессии и разность прогрессии}
  l,max:integer;
   begin
    clrscr;
    write ('Razmer massiva:(N<50) ');readln(n);
    for i:=1 to n do begin
     write ('C[',i,'] = ');readln(c[i]);
    end;
    i:=1;
    j:=1;
    k:=0;
{запишем в массив b все прогрессии,содержащиеся в массиве c}
    while i<n do begin
     if (i<>1) and (c[i]=(c[i-1]+c[i+1])/2) then begin
      d:=c[i]-c[i-1];{вычисляем разность прогрессии}
      b[j]:=c[i-1];{записываем в массив 1ый эл прогрессии}
      inc(j);
      k:=k+1;
       repeat
        b[j]:=c[i];{пишем в массив след эл прогрессии}
        inc(i);
        inc(j);
        k:=k+1;
       until (i>n) or (c[i]<>c[i-1]+d);
     if (i<>n) and (i<>1) then
      begin
       j:=j+1;
       k:=k+1;
       end;
      end;
     inc(i);
    end;
    for i:=1 to n do write (c[i],' ');
    writeln;
{Найдем в массиве b макс цепочку прогрессии}
    i:=2;
    l:=1;
    while i<k do begin
     d:=b[i]-b[i-1];
     if b[i]=0 then i:=i+2 else
      while (b[i]=b[i-1]+d) and (i<=k) do begin
        l:=l+1;
        i:=i+1;
      end;
      if l>max then{если полученная цепочка больше пред, то}
       begin
         max:=l;{делаем её максимальной}
         j:=i-max;{записываем её левый индекс(начало цепочки)}
       end;
     l:=1;
     end;
{вывод макс последовательности}
    write ('Max: ');
    for i:=j to max+j-1 do write (b[i],' ');
    writeln;
end.