Назад Зміст Вперед

Задачі з вектором та індексом

У цій главі скомпоновані такі задачі:

  1. Вектор за допомогою функцій, заповнюється випадковими цілими числами та виводиться на екран.
  2. В цьому векторі за допомогою функції, знаходиться індекс першого або останнього елемента з деякою ознакою. Якщо потрібний елемент не знайдено, функції повинні повертати число -1.

Приклад 1

Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить індекс останнього від'ємного елемента у векторі. Якщо від'ємний елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

#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;  // Якщо не знайдено
}

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

  1. Введення даних: Користувач вводить діапазон (a, b) і кількість елементів (n).
  2. Генерація вектора: Програма створює вектор з n випадкових чисел у заданому діапазоні.
  3. Виведення вектора: Усі елементи вектора виводяться на екран.
  4. Пошук останнього від'ємного: Програма шукає останній від'ємний елемент, починаючи з кінця вектора.
  5. Результат: Виводиться значення та індекс останнього від'ємного елемента або повідомлення про їх відсутність.

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

Введіть мінімальне значення (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

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

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

Варіант 1

Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить індекс останнього непарного числа у векторі. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 2

Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить індекс першого парного числа у векторі. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 3

Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього числа, яке кратне 5. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 4

Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа, яке кратне 3. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 5

Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього числа, яке кратне 5. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 6

Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа, яке зкінчується на цифру 0. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 7

Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього двозначного числа. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 8

Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого однозначного числа. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 9

Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього числа, яке починається на цифру 7. Для знаходження першої цифри числа викоритовувати функцію FirstDig. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 10

Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа, яке починається на цифру 1. Для знаходження першої цифри числа викоритовувати функцію FirstDig. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 11

Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього не простого числа. Для визначення, чи є число простим, викоритовувати функцію IsPrime. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 12

Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого простого числа. Для визначення, чи є число простим, викоритовувати функцію IsPrime. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 13

Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього числа Фібоначчі. Для визначення, чи є елемент числом Фібоначчі, викоритовувати функцію IsFib. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 14

Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа Фібоначчі. Для визначення, чи є елемент числом Фібоначчі, викоритовувати функцію IsFib. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 15

Напишіть функцію з прототипом int FindLast(vector <int> v), яка знаходить у векторі індекс останнього числа, у якого сума цифр непарна. Для обчислення суми цифр, викоритовувати функцію SumDig. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 16

Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа паліндрома. Для визначення, чи є елемент паліндромом, викоритовувати функцію IsPal. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Варіант 17

Напишіть функцію з прототипом int FindFirst(vector <int> v), яка знаходить у векторі індекс першого числа, у якого сума цифр парна. Для обчислення суми цифр, викоритовувати функцію SumDig. Якщо елемент не знайдено, функція повинна повертати число -1.

Напишіть програму, яка:

Назад Зміст Вперед