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

Задача

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

Решение

 

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

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

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

  1. Считываем числа с помощью процедуры read() и помещаем их в массив.
  2. Переменной qty присваиваем значение 0.
  3. Переменной i, которая обозначает индекс массива, присваиваем значение 2, т.к проверять первый элемент массива не имеет смысла (у него нет левого соседа).
  4. В условии цикла выражение i < m говорит о том, что последний элемент массива также не проверяется, т.к. у него нет правого соседа.
  5. Если очередной элемент массива (arr[i]) больше предшествующего (arr[i-1]) и очередной элемент массива (arr[i]) больше последующего (arr[i+1]), то ...
  6. ... увеличить значение qty на единицу и ...
  7. ... увеличить значение i на 2, т.к проверять следующий элемент нет смысла, т.к. уже известно, что он меньше левого соседа.
  8. Иначе (если условие не выполнилось) перейти к следующему элементу массива (i := i + 1).
  9. Вывести значение 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, т.к. только четверка и семерка больше обоих своих соседей.

 

Тема

Одномерные массивы

Уровень

Комбинированные задачи

Теги

Добавить комментарий