В массиве целых положительных чисел, упорядоченных по возрастанию, определить положение наиболее длинной группы, представляющей собой отрезок натурального ряда чисел — Pascal(Паскаль)

uses crt;
const nmax=100;
var a:array[1..nmax] of word;
    n,i,j,k,i1,ip,max:byte;
begin
clrscr;
repeat
write('Размер масcива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите целые положительные числа в возрастающем порядке:');
repeat
readln(a[1]);
until a[1]>0;
for i:=2 to n do
repeat
readln(a[i]);
until a[i]>a[i-1];//следим чтобы в массив писались только числа больше предыдущих
clrscr;
writeln('Массив:');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln;
i:=2;max:=0;//начнем с номера 2, макс длина цепочки=0
while i<=n do//пока не конец
if a[i]=a[i-1]+1 then//если по порядку
  begin
   j:=i;//смотрим с этой позиции дальше
   k:=0;//пока прироста нет
   i1:=i-1;//индекс начала цепочки
   while (a[j]=a[j-1]+1)and(j<=n) do//пока соблюдается порядок и не конец массива
    begin
     j:=j+1;//идем вперед
     k:=k+1;//считаем
    end;
   if k>max then//если болше макс
     begin
      max:=k;//это пока макс
      ip:=j-1;//индекс конца цепочки
     end;
   i:=i+k+1;//перепрыгиваем через эту цепочку
  end
else i:=i+1;//если не порядок, идем дальше
writeln('Наибольшая цепочка подряд идущих элементов:');
for i:=i1 to ip do//выводим цепочку
write(a[i],' ');
readln
end.

Leave a Comment

77 + = 85