Найти в массиве наибольшую по количеству элементов арифметическую прогрессию - 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.

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

  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
Похожие ответы