Назад
Зміст
Вперед
Задачі з вектором та індексом
У цій главі скомпоновані такі задачі:
- Вектор за допомогою функцій, заповнюється випадковими цілими числами та виводиться на екран.
- В цьому векторі за допомогою функції, знаходиться індекс першого або останнього елемента з деякою ознакою. Якщо потрібний елемент не знайдено, функції повинні повертати число -1.
Приклад 1
Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить індекс останнього від'ємного елемента у векторі.
Якщо від'ємний елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect , заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindLast знаходить індекс останнього від'ємного елементу масиву.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
#include <iostream>
#include <random>
#include <vector>
using namespace std;
// Прототипи функцій
void RandVect(vector<int>& v, int n, int a, int b);
void PrintVect(const vector<int>& v);
int FindLastNegative(const vector<int>& v);
int main() {
// Ініціалізація змінних
int a, b, n;
// Введення даних
cout << "Введіть мінімальне значення (a): ";
cin >> a;
cout << "Введіть максимальне значення (b): ";
cin >> b;
cout << "Введіть кількість елементів (n): ";
cin >> n;
// Створення та заповнення вектора
vector<int> vect;
RandVect(vect, n, a, b);
// Виведення вектора
PrintVect(vect);
// Пошук останнього від'ємного елемента
int ind = FindLastNegative(vect);
if (ind == -1) {
cout << "Від'ємні елементи відсутні";
} else {
cout << "Останній від'ємний елемент: " << vect[ind]
<< ", Індекс: " << ind;
}
return 0;
}
// Заповнення вектора випадковими числами (Mersenne Twister)
void RandVect(vector<int>& v, int n, int a, int b) {
random_device rd; // Джерело ентропії
mt19937 gen(rd()); // Генератор Mersenne Twister
uniform_int_distribution<int> dist(a, b); // Рівномірний розподіл
v.resize(n);
for (int i = 0; i < n; ++i) {
v[i] = dist(gen); // Генерація випадкового числа
}
}
// Виведення вектора
void PrintVect(const vector<int>& v) {
cout << "Вектор: ";
for (int num : v) {
cout << num << " ";
}
cout << endl;
}
// Пошук останнього від'ємного елемента
int FindLastNegative(const vector<int>& v) {
for (int i = v.size() - 1; i >= 0; --i) { // Перебір з кінця
if (v[i] < 0) { // Умова для від'ємних чисел
return i;
}
}
return -1; // Якщо не знайдено
}
Пояснення роботи програми:
- Введення даних: Користувач вводить діапазон (a, b) і кількість елементів (n).
- Генерація вектора: Програма створює вектор з n випадкових чисел у заданому діапазоні.
- Виведення вектора: Усі елементи вектора виводяться на екран.
- Пошук останнього від'ємного: Програма шукає останній від'ємний елемент, починаючи з кінця вектора.
- Результат: Виводиться значення та індекс останнього від'ємного елемента або повідомлення про їх відсутність.
Приклад роботи програми:
Введіть мінімальне значення (a): -10
Введіть максимальне значення (b): 10
Введіть кількість елементів (n): 20
Вектор: -10 0 -8 3 1 -7 -5 10 -10 7 -6 -6 -3 1 -5 -8 -9 -8 3 5
Останній від'ємний елемент: -8, Індекс: 17
Ключові особливості:
- Використовує надійний генератор Mersenne Twister
- Ефективний пошук з кінця вектора
- Зручний інтерфейс введення/виведення
- Обробка випадку відсутності від'ємних елементів
Варіанти задач
Варіант 1
Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить індекс останнього непарного числа у векторі. Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindLast знаходить індекс останнього непарного елементу вектору.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 2
Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить індекс
першого парного числа у векторі. Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindFirst знаходить індекс першого парного елементу вектора.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 3
Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього числа, яке кратне 5. Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindLast знаходить індекс останнього елементу вектора, який кратний 5.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 4
Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа, яке кратне 3. Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindFirst знаходить індекс першого елементу вектора, який кратний 3.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 5
Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього числа, яке кратне 5. Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindLast знаходить індекс останнього елементу вектора, який кратний 5.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 6
Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа, яке зкінчується на цифру 0. Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindFirst знаходить індекс першого елементу вектора, який зкінчується на цифру 0.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 7
Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього двозначного числа. Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindLast знаходить індекс останнього двозначного числа.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 8
Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого однозначного числа. Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindFirst знаходить індекс першого однозначного елементу вектора.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 9
Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього числа, яке починається на цифру 7. Для знаходження першої цифри числа викоритовувати функцію FirstDig.
Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindLast знаходить індекс останнього числа, яке починається на цифру 7.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 10
Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа, яке починається на цифру 1. Для знаходження першої цифри числа викоритовувати функцію FirstDig.
Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindFirst знаходить індекс першого числа, яке починається на цифру 1.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 11
Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього не простого числа. Для визначення, чи є число простим, викоритовувати функцію IsPrime.
Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindLast знаходить індекс останнього не простого числа.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 12
Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого простого числа. Для визначення, чи є число простим, викоритовувати функцію IsPrime. Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindFirst знаходить індекс першого простого числа.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 13
Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього числа Фібоначчі. Для визначення, чи є елемент числом Фібоначчі, викоритовувати функцію IsFib.
Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindLast знаходить індекс останнього числа Фібоначчі.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 14
Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа Фібоначчі. Для визначення, чи є елемент числом Фібоначчі, викоритовувати функцію IsFib.
Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindFirst знаходить індекс першого числа Фібоначчі.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 15
Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього числа, у якого сума цифр непарна. Для обчислення суми цифр, викоритовувати функцію SumDig.
Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindLast знаходить індекс останнього числа, у якого сума цифр непарна.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 16
Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа паліндрома. Для визначення, чи є елемент паліндромом, викоритовувати функцію IsPal.
Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindFirst знаходить індекс першого елемента, що є паліндромом.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс. Якщо, не знайдено, то виводить повідомлення.
Варіант 17
Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа, у якого сума цифр парна. Для обчислення суми цифр, викоритовувати функцію SumDig.
Якщо елемент не знайдено, функція повинна повертати число -1.
Напишіть програму, яка:
- За допомогою функції RandVect, заповнює вектор випадковими цілими числами.
- За допомогою функції PrintVect, виводить вектор на екран.
- За допомогою функції FindFirst знаходить індекс першого числа, у якого сума цифр парна.
- Якщо елемент знайдено, то програма виводить на екран знайдений елемент та його індекс.
Якщо, не знайдено, то виводить повідомлення.
Назад
Зміст
Вперед