Вперед Зміст

Задачі на видалення декількох елементів з використанням функцій remove_if та erase

Приклад

Використовуючи функції написати таку програму:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;

// Прототипи функцій
void RandVect(vector<int>& v, int n, int a, int b);
void PrintVect(const vector<int>& v);
bool Neg(int x);

int main() {
    // Ініціалізація генератора випадкових чисел
    srand(time(0));

    vector<int> vect;
    int a, b, n;

    // Введення параметрів
    cout << "Введіть мінімальне значення (a): ";
    cin >> a;
    cout << "Введіть максимальне значення (b): ";
    cin >> b;
    cout << "Введіть кількість елементів (n): ";
    cin >> n;

    // Заповнення та виведення вектора
    RandVect(vect, n, a, b);
    cout << "Початковий вектор: ";
    PrintVect(vect);

    // Видалення від'ємних елементів
    auto new_end = remove_if(vect.begin(), vect.end(), Neg);
    vect.erase(new_end, vect.end());

    // Виведення результату
    cout << "Вектор після видалення від'ємних: ";
    PrintVect(vect);

    return 0;
}

// Функція заповнення вектора випадковими числами
void RandVect(vector<int>& v, int n, int a, int b) {
    v.resize(n);
    for (int i = 0; i < n; ++i) {
        v[i] = a + rand() % (b - a + 1);
    }
}

// Функція виведення вектора
void PrintVect(const vector<int>& v) {
    for (int num : v) {
        cout << num << " ";
    }
    cout << endl;
}

// Предикат для пошуку від'ємних чисел
bool Neg(int x) {
    return x < 0;
}

Пояснення роботи програми:

  1. Введення параметрів: Користувач вводить діапазон [a, b] та кількість елементів n.
  2. Генерація вектора: Функція RandVect заповнює вектор випадковими числами.
  3. Виведення початкового вектора: Функція PrintVect показує згенерований вектор.
  4. Видалення від'ємних елементів:
    • remove_if переміщує всі невід'ємні елементи на початок вектора
    • Повертає ітератор на новий кінець діапазону
    • erase видаляє всі елементи від нового кінця до кінця вектора
  5. Виведення результату: Показує вектор після видалення від'ємних елементів.

Приклад роботи програми:


Введіть мінімальне значення (a): -5
Введіть максимальне значення (b): 5
Введіть кількість елементів (n): 10
Початковий вектор: 3 -2 4 0 -5 2 -1 5 -4 1
Вектор після видалення від'ємних: 3 4 0 2 5 1

Ключові особливості:

Завдання

Для всіх варіантів:

Варіанти задач

  1. Видалити з вектору всі непарні числа.
  2. Видалити з вектору додатні числа.
  3. Видалити з вектору всі числа, які кратні С.
  4. Видалити з вектору всі числа, які меньші числа Х.
  5. Видалити з вектору всі числа, які кратні 3 або 5.
  6. Видалити з вектору всі числа, які кратні числу В і закінчуються на цифру С.
  7. Видалити з вектору всі числа, які кратні своїй останній цифрі.
  8. Видалити з вектору всі числа, у яких перша цифра парна. Додатково використовувати функцію FirstDig.
  9. Видалити з вектору всі числа, в запису яких є цифра 5. Додатково використовувати функцію NumDigCofA.
  10. Видалити з вектору всі максимальні числа. Додатково використовувати функцію IndMax.
  11. Видалити з вектору всі мінімальні числа. Додатково використовувати функцію IndMin.
  12. Видалити з вектору всі числа, які починаються на цифру С. Додатково використовувати функцію FirstDig.
  13. Видалити з вектору всі числа, які починаються та закінчуються однаковими цифрами (окрім однозначних). Додатково використовувати функцію FirstDig.
  14. Видалити з вектору всі числа, які складаються з однакових цифр (включаючи однозначні). Додатково використовувати функції NumDigCofA та NumDig.
  15. Видалити з вектору всі числа, у яких цифри розташовані за зростанням (137, 49). Додатково написати функцію з прототипом bool IsAsc(int n), яка визначає, чи розташовані цифри числа n за зростанням?
  16. Видалити з вектору всі прості числа. Додатково використовувати функцію IsPrime.
  17. Видалити з вектору всі числа паліндроми. Додатково використовувати функцію IsPal.

Вперед Зміст