Лабораторная работа №8 STL::vector




 

Используя контейнер vector библиотеки STL решить следующие задачи:

Общее задание:

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

1 2 3 4 -5

6 8 10 -20 33

Результат:

1 6 2 8 3 10 4 -20 -5 33

Индивидуальное задание:

1. Определить сколько раз менялся знак у элементов последовательности. Сформировать и вывести массив (вектор) номеров элементов, знак которых отличается от предыдущего элемента.

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

3. Если максимальных элемент массива расположен во второй его половине, поменять местами левую и правую половины.

4. Если каждый элемент массива X больше соответствующего элемента массива C, то вычислить i=0n-1(xi2-ci2).

5. Если сумма индексов положительных элементов массива четна, поменять местами соседние нечетный и чётный элементы. Первый со вторым, третий с четвёртым и т.д.

6. Найти сумму положительных элементов массива, индексы которых находятся между индексами минимального и максимального элементов.

7. Удалить максимальный элемент массива. Все следующие за ним элементы должны быть сдвинуты влево, а последний элемент удалён.
Например, в массиве [4,2,5,6,1,2,3]. Ответ: 4,2,5,1,2,3.

8. Найти максимальный отрицательный элемент в массиве с нечетным индексом. Также найти среднее арифметическое таких элементов, начиная от индекса минимального элемента массива.

9. Из исходного массива сформировать новый массив равноудалённых от краёв массива элементов. Например, для массива [1,2,3,4,5] ответ будет [6,6,3].

10. Сформировать новый массив из исходного массива, содержащий элементы, большие среднего арифметического всех элементов исходного массива.

11. В массиве отсортировать по убыванию все элементы, начиная с индекса максимального элемента.

12. Сформировать новый массив из исходного массива, содержащий элементы, индексы которых больше индекса максимального элемента исходного массива.

13. В массиве отсортировать по убыванию все элементы, начиная с индекса минимального элемента.

14. Сформировать новый массив из исходного массива, содержащий элементы, расположенные между максимальным и минимальным элементами.

15. Если сумма модулей отрицательных элементов массива больше суммы модулей положительных элементов массива, инвертировать знаки элементов массива. Иначе - отсортировать массив по убыванию.

16. Вставить максимальный элемент массива после каждого отрицательного элемента с четным индексом.

17. Преобразовать массив таким образом, чтобы отрицательные элементы чередовались с неотрицательными. При этом порядок отрицательных и положительных элементов должен сохраниться. Можно использовать дополнительные вектора.

18. Если в векторе сумма квадратов всех его элементов больше N, добавить её в конец массива, иначе изменить порядок элементов в массиве на противоположный.

19. Даны два массива размера N, обозначающих ветора в N-размерном пространстве из точки 01, 02, 03,..., 0n. Найти вектор суммы исходных векторов и его длину.

20. Сформировать из первых N чисел Фибоначчи, начиная с числа под номером K. Последовательность Фибоначчи считать начинающейся с 0, 1.

21. Инверсией называется ситуация, в которой нарушается упорядоченность соседних элементов массива. Например, в массиве при проверке упорядоченности по возрастанию [1,2,1,0] две инверсии: 2 и 1, 1 и 0.
Отсортировать массив по такому порядку (по возрастанию или по убыванию), инверсий по которому меньше. Например, если в массиве 1 инверсия по возрастанию и 2 по убыванию, отсортировать по возрастанию.

22. Даны два массива символов: массив уникальных символов алфавита и массив символов сообщения. Сформировать новый массив, зашифрованный шифром Цезаря с использованием числа N, вводимого пользователем.

23. Циклическим сдвигом элементов массива называется такое преобразование, в котором индексы элементов массива меняются на некоторое число. Например, массив [1, 2, 3, 4] может быть циклически сдвинут влево на 1 для получения массива [2, 3, 4, 1].
Сформировать новый массив, полученный циклическим сдвигом исходного массива на N. Если N отрицательное, произвести циклический сдвиг влево, иначе вправо.

24. На основе входного вектора сформировать новый вектор, в котором удалены элементы, начиная с индекса N, заканчивая M. Если сумма удалённых элементов положительна, отсортировать результат по возрастанию.

25. Дан массив чисел. Известно, что многие подряд идущие числа в этом массиве равны. Реализовать сжатие исходного массива так, что в новом массиве вместо N подряд идущих чисел K появляется 2 подряд идущих числа N K.
Например, в массиве [1, 1, 1, 3, 2, 2, 2, 2, 2, 11, 11, 11, 11, 11, 11] будет сжат до массива [3, 1, 1, 3, 5, 2, 6, 11]

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-10-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: