Найти в массиве наибольшую по количеству элементов арифметическую прогрессию - 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) Сравнение количества элементов текущей прогрессии с максимальной и обновление максимальной, если необходимо.
- Вывод наибольшей прогрессии на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д