Вперед
Зміст
Задачі на вставлення одного елементу з використанням функцій find_if та insert
Приклад
Використовуючи функції написати таку програму:
- Ввести з клавіатури n - кількість елементів вектору, а також значення змінних a та b.
- За допомогою функції RandVect заповнити вектор.
- За допомогою функції PrintVect вивести вектор на екран.
- За допомогою функції find_if знайти ітератор першого від'ємного елементу вектору.
- Якщо елемент знайдено, то вставити перед та після нього число 100 за допомогою функції 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;
}
Пояснення роботи програми:
- Введення параметрів: Користувач вводить діапазон [a, b] та кількість елементів n.
- Генерація вектора: Функція
RandVect заповнює вектор випадковими числами.
- Виведення вектора: Функція
PrintVect показує початковий вектор.
- Пошук від'ємного елемента: Алгоритм
find_if шукає перший елемент, що задовольняє умову Neg.
- Вставка елементів:
- Спочатку вставляємо 100 після знайденого елемента
- Потім вставляємо 100 перед знайденим елементом
- Такий порядок важливий, щоб не змістити ітератор
- Виведення результату: Показує змінений вектор або повідомлення про помилку.
Приклад роботи програми:
Введіть мінімальне значення (a): -5
Введіть максимальне значення (b): 5
Введіть кількість елементів (n): 8
Початковий вектор: 2 -3 4 0 -1 5 -2 1
Змінений вектор: 2 100 -3 100 4 0 -1 5 -2 1
Ключові особливості:
- Правильна робота з ітераторами при вставці
- Зручний інтерфейс введення/виведення
- Обробка всіх граничних випадків
- Чіткий порядок вставки елементів
Завдання
Для всіх варіантів:
- Ввести з клавіатури n - кількість елементів вектору, а також значення змінних a та b.
- За допомогою функції RandVect заповнити вектор.
- За допомогою функції PrintVect вивести вектор на екран.
- За допомогою функції find_if знайти ітератор потрібного елементу вектору за умовою задачи.
- Якщо елемент знайдено, то вставити перед або після нього (в залежності від варіанту) число В за допомогою функції insert та вивести на екран вміст вектору.
- Якщо не знайдено, то вивести повідомлення.
Варіанти задач
- Вставити число В перед останнім парним числом вектору.
- Вставити число В після першого додатного числа вектору.
- Вставити число В у вектор перед останнім числом, яке більше числа 20.
- Вставити число В у вектор після першого числа, яке закінчується на цифру 1.
- Вставити число В перед останнім максимальним числом вектору.
- Вставити число В після першого мінімального числа вектору.
- Вставити число В перед останнім числом, яке закінчується на 3.
- Вставити число В у вектор після першого числа, яке кратне 3 або 5.
- Вставити число В у вектор перед першим числом, яке кратне 3 та закінчується на цифру 2.
- Вставити число В у вектор перед останнім числом, сума цифр якого дорівнює 10. Додатково використовувати функцію SumDig.
- Вставити число В у вектор перед першим числом, в запису якого є цифра 5. Додатково використовувати функцію NumDigCofA.
- Вставити число В у вектор після останнього числа, у якого перша цифра дорівнює 3. Додатково використовувати функцію FirstDig.
- Вставити число В у вектор перед першим числом, яке складається з однакових цифр (включаючи однозначні). Додатково використовувати функції NumDig та NumDigCofA.
- Вставити число В у вектор перед першим простим числом.
Додатково використовувати функцію IsPrime.
- Вставити число В у вектор перед останнім числом, у якого цифри розташовані за спаданням (321, 52).
Додатково написати функцію з прототипом bool IsDesc(int n), яка визначає, чи розташовані цифри числа n за спаданням?
- Вставити число В у вектор після останнього числа Фібоначчі. Додатково використовувати функцію IsFib.
- Вставити число В у вектор після першого числа, яке починається та закінчується однаковими цифрами (окрім однозначних). Додатково використовувати функцію FirstDig.
Вперед
Зміст