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

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

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

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

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

textual
Листинг программы
  1. uses crt;
  2. const nmax=30;
  3. var a:array[1..nmax] of integer;
  4.     n,i,j,k,mx,imx:byte;
  5. begin
  6. clrscr;
  7. repeat
  8. write('Размер массива до ',nmax,' n=');
  9. readln(n);
  10. until n in [1..nmax];
  11. writeln('Введите элементы массива, в том числе образующие пилообразные последовательности');
  12. for i:=1 to n do
  13.  begin
  14.   write('a[',i,']=');
  15.   readln(a[i]);
  16.  end;
  17. clrscr;
  18. writeln('Массив:');
  19. for i:=1 to n do
  20. write(a[i],' ');
  21. writeln;
  22. writeln;
  23. i:=2;mx:=0;imx:=0;
  24. while i<n do
  25. 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
  26.   begin
  27.    j:=i;k:=2;
  28.    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
  29.     begin
  30.      j:=j+1;
  31.      k:=k+1;
  32.     end;
  33.    if k>mx then
  34.     begin
  35.      mx:=k;
  36.      imx:=i-1;
  37.     end;
  38.    i:=i+k;
  39.   end
  40. else i:=i+1;
  41. if mx=0 then write('Нет пилообразной последовательности!')
  42. else
  43.  begin
  44.   writeln('Максимальная пилообразная последовательность одинаковых чисел=',mx);
  45.   for i:=imx to imx+mx-1 do
  46.   write(a[i],' ');
  47.   writeln;
  48.   write('Её длина=',mx);
  49.  end;
  50. readln
  51. end.

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

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы