Найти в массиве наибольшую по количеству элементов арифметическую прогрессию - Pascal

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

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

Добрый день. Нахожусь очень у трудной ситуации. Дано условие : В массиве Z(n) найти наибольшую по количеству элементов арифметическую прогрессию ( элементы прогрессии стоят в массиве в произвольном порядке ). Сейчас потею на курсовым проектом, и это ещё дали. На ваш суд, буду рад каким либо предложениям по задаче.

Решение задачи: «Найти в массиве наибольшую по количеству элементов арифметическую прогрессию»

textual
Листинг программы
  1. type
  2.     TProgression = record
  3.         startId, count: Byte;
  4.         d: ShortInt;
  5.     end;
  6. var
  7.     z: Array[Byte] Of ShortInt;
  8.     i, j, n: Byte;
  9.     curr, max: TProgression;
  10. begin
  11.     repeat
  12.         Write('Input n (>1) =');
  13.         ReadLn(n);
  14.     until (n > 1);
  15.     WriteLn('Original array:');
  16.     for i := 0 to n - 1 do
  17.     begin
  18.         Write('z[', i + 1, ']=');
  19.         ReadLn(z[i]);
  20.     end;
  21.     with max do
  22.     begin
  23.         startId := 0;
  24.         count := 0;
  25.         d := 0;
  26.     end;
  27.     for i := 1 to n - 1 do
  28.     begin
  29.         with curr do
  30.         begin
  31.             startId := i - 1;
  32.             count := 1;
  33.             d := z[i] - z[i - 1];
  34.             j := i + 1;
  35.             while (j < n) do
  36.                 if (z[j] - z[j - 1] = d)
  37.                 then
  38.                 begin
  39.                     Inc(count);
  40.                     Inc(j);
  41.                 end
  42.                 else
  43.                     Break;
  44.         end;
  45.         if (curr.count > max.count)
  46.         then
  47.             max := curr;
  48.     end;
  49.     WriteLn; Write('Max progression:');
  50.     for i := max.startId to max.startId + max.count do
  51.         Write(z[i]:4);
  52. end.

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

  1. Определение типа структуры TProgression с полями startId, count и d.
  2. Объявление массива z типа Array[Byte] Of ShortInt, и переменных i, j, n типа Byte, а также переменных curr и max типа TProgression.
  3. Ввод значения переменной n с клавиатуры до тех пор, пока введенное число не будет больше 1.
  4. Ввод значений элементов массива z с клавиатуры.
  5. Инициализация полей структуры max (startId, count, d) нулями.
  6. Выполнение цикла для нахождения наибольшей арифметической прогрессии в массиве:     a) Определение начального элемента, количества и разности для текущей прогрессии.     b) Поиск остальных элементов прогрессии и увеличение их счетчика, пока разность между соседними элементами равна заданной.     c) Сравнение количества элементов текущей прогрессии с максимальной и обновление максимальной, если необходимо.
  7. Вывод наибольшей прогрессии на экран.

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


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

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

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

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

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

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