Вперед Зміст

Задачі на вставлення одного елементу з використанням функцій find_if та insert

Приклад

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

Пам'ятаємо, якщо у вектор вставляється два елемента, то спочатку потрібно виконати вставлення перед елементом з більшим ітератором, а потім перед елементом з меншим ітератором.

#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));
    
    // Введення параметрів
    int a, b, n;
    cout << "Введіть мінімальне значення (a): ";
    cin >> a;
    cout << "Введіть максимальне значення (b): ";
    cin >> b;
    cout << "Введіть кількість елементів (n): ";
    cin >> n;

    // Створення та заповнення вектора
    vector<int> vect;
    RandVect(vect, n, a, b);
    
    // Виведення початкового вектора
    cout << "Початковий вектор: ";
    PrintVect(vect);

    // Пошук першого від'ємного елемента
    auto it = find_if(vect.begin(), vect.end(), Neg);
    
    if (it != vect.end()) {
        // Вставка 100 після елемента (спочатку, щоб не змістити ітератор)
        vect.insert(it + 1, 100);
        // Вставка 100 перед елементом
        vect.insert(it, 100);
        
        // Виведення зміненого вектора
        cout << "Змінений вектор: ";
        PrintVect(vect);
    } else {
        cout << "error: від'ємні елементи відсутні" << endl;
    }

    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. Пошук від'ємного елемента: Алгоритм find_if шукає перший елемент, що задовольняє умову Neg.
  5. Вставка елементів:
    • Спочатку вставляємо 100 після знайденого елемента
    • Потім вставляємо 100 перед знайденим елементом
    • Такий порядок важливий, щоб не змістити ітератор
  6. Виведення результату: Показує змінений вектор або повідомлення про помилку.

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


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

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

Завдання

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

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

  1. Вставити число В перед останнім парним числом вектору.
  2. Вставити число В після першого додатного числа вектору.
  3. Вставити число В у вектор перед останнім числом, яке більше числа 20.
  4. Вставити число В у вектор після першого числа, яке закінчується на цифру 1.
  5. Вставити число В перед останнім максимальним числом вектору.
  6. Вставити число В після першого мінімального числа вектору.
  7. Вставити число В перед останнім числом, яке закінчується на 3.
  8. Вставити число В у вектор після першого числа, яке кратне 3 або 5.
  9. Вставити число В у вектор перед першим числом, яке кратне 3 та закінчується на цифру 2.
  10. Вставити число В у вектор перед останнім числом, сума цифр якого дорівнює 10. Додатково використовувати функцію SumDig.
  11. Вставити число В у вектор перед першим числом, в запису якого є цифра 5. Додатково використовувати функцію NumDigCofA.
  12. Вставити число В у вектор після останнього числа, у якого перша цифра дорівнює 3. Додатково використовувати функцію FirstDig.
  13. Вставити число В у вектор перед першим числом, яке складається з однакових цифр (включаючи однозначні). Додатково використовувати функції NumDig та NumDigCofA.
  14. Вставити число В у вектор перед першим простим числом. Додатково використовувати функцію IsPrime.
  15. Вставити число В у вектор перед останнім числом, у якого цифри розташовані за спаданням (321, 52). Додатково написати функцію з прототипом bool IsDesc(int n), яка визначає, чи розташовані цифри числа n за спаданням?
  16. Вставити число В у вектор після останнього числа Фібоначчі. Додатково використовувати функцію IsFib.
  17. Вставити число В у вектор після першого числа, яке починається та закінчується однаковими цифрами (окрім однозначних). Додатково використовувати функцію FirstDig.

Вперед Зміст