Домашнее задание №3

Дорешайте задачи лабораторных работ этой недели.

Перед тем, как решать задачи связанные с векторами, ознакомьтесь с описанием класса (в статьях о методах класса есть примеры кода), также примеры есть здесь

Все решения задач домашней работы оформляются в виде отдельных функций, заголовки которых помещены в заголовочный файл hw4.h Везде, где явно не указан тип элементов вектора, создаём шаблон функции.

  1. Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины (целое число в диапазоне 1–5) и длина отрезка в этих единицах (вещественное число). Найти длину отрезка в метрах.

    Указание: используйте в решении перечисление enum для единиц длины.

  2. Написать шаблон функции void PrintVector(vector<T> vec, char delim) печати вектора, которая принимает два параметра: вектор элементов типа T типа и разделитель delim со значением по умолчанию ' '. Функция выводит элементы вектора, разделяя их строкой delim, при этом:

    • для пустого вектора выводится строка <empty> (используем метод size());
    • за последним элементом строка-разделитель не выводится.

    Например, вектор 3, -5, 11 (с разделителем ';') должен быть напечатан следующим образом:

    3;-5;11

  3. Заполнить целочисленный вектор степенями двойки от первой до N-й: 2, 4, 8, 16, … .

  4. Дан целочисленный вектор A, содержащий хотя бы одно чётное число. Найти первое и последнее чётное число в данном массиве.

    Указание: используйте передачу параметров по ссылке (&) для возврата двух значений из функции.

  5. Дан вектор A. Вывести его элементы с нечетными номерами в порядке убывания номеров: AN,AN−2AN−4, …, A1. Условный оператор не использовать.
    Указание: решение задачи строим в виде шаблона функции.

  6. Дан вектор и целые числа K и L (0 ≤ KL < N). Найти среднее арифметическое элементов массива с номерами от K до L включительно.
    Указание: решение задачи строим в виде шаблона функции.

  7. Дан вектор размера N (N — чётное число). Поменять местами первую и вторую половины вектора.

  8. Дан вектор. Поменять порядок его элементов на обратный.

  9. Дан вектор A. Сформировать вектор B по следующему правилу: каждый элемент \( B_k \) равен среднему арифметическому элементов вектора A с номерами от 1 до k.

  10. Дан целочисленный вектор. Вставить элемент с нулевым значением перед максимальным и после минимального значения вектора.