Функція find_if знаходиться у бібліотеці algorithm. Тому для її використання необхідно підключити
| #include <algorithm> |
|---|
Функція дозволяє виконати пошук у контейнері ітератора першого елемента з певною властивістю.
| Шуканий ітератор = find_if (ітератор початку, ітератор кінця, ім'я логічної функції); |
Тут ім'я логічної функції: вказується ім’я логічної функції, яка буде перевіряти кожний елемент контейнеру, чи задовольняє він потрібній властивості.
Результатом цього пошуку є ітератор, який вказує на потрібний елемент.
Якщо такого елемента немає, ітератор вказує на адресу після останнього елемента.
Написати функцію з прототипом bool Neg(int x), яка визначає, чи є число х від'ємним . Якщо так, то функція повертає true, якщо ні, то функція повертає false.
Написати таку програму:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
#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 iter = find_if(vect.begin(), vect.end(), Neg);
// Виведення результату
if (iter != vect.end()) {
cout << "Перший від'ємний елемент: " << *iter;
} else {
cout << "Error: від'ємні елементи відсутні";
}
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): -5
Введіть максимальне значення (b): 5
Введіть кількість елементів (n): 8
Згенерований вектор: 2 -3 4 0 -1 5 -2 1
Перший від'ємний елемент: -3