Найти в массиве наибольшую по количеству элементов арифметическую прогрессию - Pascal
Формулировка задачи:
Добрый день. Нахожусь очень у трудной ситуации. Дано условие : В массиве Z(n) найти наибольшую по количеству элементов арифметическую прогрессию ( элементы прогрессии стоят в массиве в произвольном порядке ). Сейчас потею на курсовым проектом, и это ещё дали. На ваш суд, буду рад каким либо предложениям по задаче.
Решение задачи: «Найти в массиве наибольшую по количеству элементов арифметическую прогрессию»
textual
Листинг программы
type TProgression = record startId, count: Byte; d: ShortInt; end; var z: Array[Byte] Of ShortInt; i, j, n: Byte; curr, max: TProgression; begin repeat Write('Input n (>1) ='); ReadLn(n); until (n > 1); WriteLn('Original array:'); for i := 0 to n - 1 do begin Write('z[', i + 1, ']='); ReadLn(z[i]); end; with max do begin startId := 0; count := 0; d := 0; end; for i := 1 to n - 1 do begin with curr do begin startId := i - 1; count := 1; d := z[i] - z[i - 1]; j := i + 1; while (j < n) do if (z[j] - z[j - 1] = d) then begin Inc(count); Inc(j); end else Break; end; if (curr.count > max.count) then max := curr; end; WriteLn; Write('Max progression:'); for i := max.startId to max.startId + max.count do Write(z[i]:4); end.
Объяснение кода листинга программы
- Определение типа структуры
TProgression
с полямиstartId
,count
иd
. - Объявление массива
z
типаArray[Byte] Of ShortInt
, и переменныхi
,j
,n
типаByte
, а также переменныхcurr
иmax
типаTProgression
. - Ввод значения переменной
n
с клавиатуры до тех пор, пока введенное число не будет больше 1. - Ввод значений элементов массива
z
с клавиатуры. - Инициализация полей структуры
max
(startId, count, d) нулями. - Выполнение цикла для нахождения наибольшей арифметической прогрессии в массиве: a) Определение начального элемента, количества и разности для текущей прогрессии. b) Поиск остальных элементов прогрессии и увеличение их счетчика, пока разность между соседними элементами равна заданной. c) Сравнение количества элементов текущей прогрессии с максимальной и обновление максимальной, если необходимо.
- Вывод наибольшей прогрессии на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д