Найти длину k и вывести на печать самую длинную "пилообразную" последовательность - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Создать массив X[1..m]. Найти длину k и вывести на печать самую длинную "пилообразную" (зубьями вверх) последовательность идущих подряд чисел. X[ p+1]< X[ p+2 ]> X[ p+ +3 ]<. . .>X[ p+k ]. Еесть варианты? Заранее спасибо

Решение задачи: «Найти длину k и вывести на печать самую длинную "пилообразную" последовательность»

textual
Листинг программы
uses crt;
const nmax=30;
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])and(a[i]>a[i+1]))or((a[i]<a[i-1])and(a[i]<a[i+1])) then
  begin
   j:=i;k:=2;
   while(j<=n)and(((a[j]>a[j-1])and(a[j]>a[j+1]))or((a[j]<a[j-1])and(a[j]<a[j+1]))) 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],' ');
  writeln;
  write('Её длина=',mx);
 end;
readln
end.

Объяснение кода листинга программы

  1. Ввод размера массива и его элементов
  2. Вывод массива на экран
  3. Установка начального значения для переменных цикла
  4. Проверка условия для определения пилообразной последовательности
  5. Увеличение индекса на 1 при условии, что текущий элемент не является пилообразным
  6. Повторение шагов 4-5 до тех пор, пока не будет найдена пилообразная последовательность или не будут проверены все элементы массива
  7. Если пилообразная последовательность найдена, то запоминание её длины и выведение на экран
  8. Завершение работы программы

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы