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

Дорешайте задачи лабораторной работы №6

Все решения задач домашней работы оформляются в виде отдельных функций в одном файле hw-6.cpp и вызываются для демонстрации из файла main.cpp. В такой схеме, очевидно, требуется использование заголовочного файла обязательно со стражами включения.

Продемонстрируйте способность выбирать подходящие имена для функций. Имена типа task-N не подходят: имя функции должно отражать её назначение. Все функции также должны сопровождаться комментарием о смысле аргументов и возвращаемого значения.

Строки

  1. Дана строка. Удалите из нее всё, что расположено между первыми двумя символами '*' (символ должен быть параметром функции со значением по умолчанию). Если в строке нет таких символов, оставьте строку без изменения. (пользуемся find, erase)
  2. Дана строка. Найдите в ней первый символ '!' и вставьте после него подстроку '!!!' (пользуемся find, replace)
  3. Дана строка, содержащая два целых числа (возможно, отрицательных), разделенные двоеточием. Найдите сумму этих чисел (пользуемся stoi). Напишите тесты.

<algorithm>

  1. Найти в целочисленном векторе первый положительный элемент, оканчивающийся цифрой digit
    Указание 1 Используем функцию find_if. Обратите внимание на то значение, которое она возвращает.
    Указание 2 Используем в качестве третьего аргумента find_if лямбда-выражение с захватом внешней переменной
    [digit](int x) {return (x > 0 && x % 10 == digit); }

  2. Создать функцию
    pair<int, int> FirstPosAndLastNeg(vector<int> v, int digit);
    которая одновременно возвращает первое положительное и последнее отрицательное значения целочисленного вектора
    Указание 1 Используем функцию reverse
    Указание 2 Подключаем заголовочный файл
    #include <utility>
    Указание 3 Для возврата значения используем команду
    return make_pair( /*значение1*/, /*значение2*/);
    в которую нужно подставить свои переменные или значения
  3. Создать функцию, которая возвращает число элементов строкового вектора (vector<string>), которые состоят более чем из одного символа и начинаются/заканчиваются символом 'c' (используем count_if)
  4. Вернуть минимальный из положительных элементов вектора целых чисел (используем remove_if, erase и min_element)
  5. Для вектора вещественных чисел найти сумму\[ \frac{1}{a[0]}+\frac{1}{a[1]}+...++\frac{1}{a[n]} \]
    Указание 1 Используем функцию for_each
    Указание 2 Используем Используем лямбда-выражение с захватом внешней переменной по ссылке (s - переменная, в которой вычисляем сумму)
    [&s](double x) {s += 1 / x; } 
  6. Найти произведение последних цифр всех чисел целочисленного вектора