Javascript must be enabled in your browser to use this page.
Please enable Javascript under your Tools menu in your browser.
Once javascript is enabled Click here to go back to �нтеллектуальная Кобринщина

Определить количество элементов массива, значение которых больше соседних элементов

Задача:

Пользователь вводит n элементов массива. Требуется определить количество элементов, значение которых больше, чем у соседних элементов массива.

Описание переменных:

m - количество реальных элементов массива;

qty - количество элементов массива, значение которых больше, чем у соседей.

Алгоритм решения задачи:

Считываем числа с помощью процедуры read() и помещаем их в массив.

Переменной qty присваиваем значение 0.

Переменной i, которая обозначает индекс массива, присваиваем значение 2, т.к проверять первый элемент массива не имеет смысла (у него нет левого соседа).

В условии цикла выражение i < m говорит о том, что последний элемент массива также не проверяется, т.к. у него нет правого соседа.

Если очередной элемент массива (arr[i]) больше предшествующего (arr[i-1]) и очередной элемент массива (arr[i]) больше последующего (arr[i+1]), то ...

... увеличить значение qty на единицу и ...

... увеличить значение i на 2, т.к проверять следующий элемент нет смысла, т.к. уже известно, что он меньше левого соседа.

Иначе (если условие не выполнилось) перейти к следующему элементу массива (i := i + 1).

Вывести значение qty на экран.

Это не оптимальный алгоритм, но короткий.

Программа на языке Паскаль:

const

    n = 100;

var

    arr: array[1..n] of integer;

    i, m, qty: byte;

begin

    write('Количество элементов массива: ');

    readln(m);

    write('Элементы массива через пробел: ');

    for i:=1 to m do

        read(arr[i]);

    readln;

     qty := 0;

    i := 2;

    while i < m do

        if (arr[i] > arr[i-1]) and (arr[i] > arr[i+1]) then begin

                qty := qty + 1;

                i := i + 2

        end

        else

            i := i + 1;

     writeln('Кол-во элементов, которые больше соседей: ', qty);

 readln;

end.

Примечания:

Пример выполнения программы:

Количество элементов массива: 6

Элементы массива через пробел: 3 4 2 3 7 6

Количество элементов, которые больше соседей: 2

Получается 2, т.к. только четверка и семерка больше обоих своих соседей.