A305

Задача A305

Условие задачи

Даны действительные числа [latex]a_{1},\dots,a_{n}[/latex]. Оставить без изменения последовательность [latex]a_{1},\dots,a_{n}[/latex], если она упорядочена по неубыванию или по невозрастанию; в противном случае удалить из последовательности те члены, порядковые номера которых кратны четырём, сохранив прежним порядок оставленных членов.

Тестирование

Входные данные Выходные данные
1. 5
-1 2 3 4 5
-1 2 3 4 5
2. 6
6 0 2 3 4 6.7
0 2 3 6.7
3. 10
1 2 5 7 -10 3 1 3 2 1
2 5 7 3 1 3 1
4. 5
1 5 6 7.5 0
5 6 7.5
5. 3
-23 46 -80
46 -80

Реализация

Алгоритм решения

Считываем все действительные числа до конца входного потока и записываем их в вектор v1. Проверяем, упорядочена ли последовательность по возрастанию или по убыванию. Если да, выводим на экран исходную последовательность без изменений с помощью функции copy() и итератора вывода ostream_iterator, который записывает элементы последовательно в выходной поток. Если же последовательность не упорядочена ни по убыванию, ни по возрастанию, удаляем из неё элементы, порядковые номера которых кратны четырём. Важно сохранить прежним порядок оставленных членов.
Работаем следующим образом:
1. Создаём вектор v_2.
2. Уменьшаем размер контейнера с помощью функции resize(): v2.resize(size_of_the_sequence - temp). Инициализируем переменную  size_of_the_sequence значением ноль.
3. Если порядковый номер элемента неупорядоченной последовательности кратен четырём, то увеличиваем количество элементов на единицу с каждой итерацией. Иначе, присваиваем вектору v_2 значение вектора v_1: v2[i - size_of_the_sequence] = v1[i].
4. Уменьшаем размер контейнера v_1. Присваиваем вектору v_1 значение вектора v_2.
5. С помощью функции shrink_to_fit() уменьшаем количество используемой памяти вектора v_1.
6. Извлекаем все элементы из вектора v_2 с помощью функции clear().

Для запроса на выполнение следует перейти по ссылке.

Related Images: