пятница, 22 февраля 2013 г.

Массивы 10.2

Ввести массив из N натуральных чисел. Найти в нем и вывести на печать монотонно возрастающую подпоследовательность максимальной длины.

uses crt;
const nmax=20;
var a:array[1..nmax] of integer;
n,i,j,k,mx,imx:byte;

begin
clrscr;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы массива, в том числе возрастающие участки:');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
clrscr;
writeln('Массив:');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln;
i:=2;mx:=0;imx:=0;
while i<=n do
if a[i]>a[i-1] then
begin
j:=i;k:=1;
while (a[j]>a[j-1])and(j<=n) do
begin
j:=j+1;
k:=k+1;
end;
if k>mx then
begin
mx:=k;
imx:=i-1;
end;
i:=i+k;
end
else i:=i+1;
if mx=0 then write('Нет участков возрастания!')
else
begin
writeln('Максимальная последовательность возрастающих чисел=',mx);
for i:=imx to imx+mx-1 do
write(a[i],' ');
end;
readln
end.