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

Задачі на пошук першого та останнього числа з заданою властивістю

За даним алгоритмом можна з декількох чисел знаходити перші (останні) числа з будь-якою властивістю.

Правило

При складанні програм на знаходження першого або останнього числа з заданою властивістю з декількох чисел, потрібно пам’ятати:

  1. Тип першого (останнього) числа співпадає з типом чисел, серед яких його обирають
  2. Тип порядкових номерів завжди цілийli
  3. Перед циклом потрібно присвоїти початкове значення, що дорівнює 0 змінній в який буде знаходитись порядковий номер шуканого числа.
    1. У циклі,
    2. Вводиться наступне число a
    3. Це число a та його порядковий номер запам’ятовують якщо:
  4. Для знаходження першого числа – введене число a відповідає вказаній властивості та є першим з таких чисел (порядковий номер шуканого числа дорівнює 0)
  5. Для знаходження останнього числа – для всіх чисел a, що відповідають вказаній властивості
    1. якщо введене число a не відповідає вказаній властивості, то значення a та його порядковий номер не запам’ятовують.
    2. Після завершення циклу знайдені значення виводяться на екран.

Приклад 1

Ввести з клавіатури n цілих чисел. Знайти серед цих чисел останнє однозначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Результат роботи програми

ВвідВивідПояснення
4
13 8 7 -12
7 3 Перше число 4 це кількість чисел.
Числа мають порядкові номери:
13 – 1, 8 – 2, 7 – 3, -12 – 4.
Серед цих чотирьох чисел однозначних два.
Перше 8 має порядковий номер 2.
Друге 7 має порядковий номер 3.
Нам потрібно останнє з порядковим номером 3.
3
81 57 322
NoОднозначних чисел немає

Змінні:

Вхідні:

Вихідні:

Проміжні:

Алгоритм

  1. Спочатку потрібно ввести кількість чисел
  2. Потім потрібно встановити початкове значення змінній npa. Будемо вважати, що однозначних чисел немає, тому npa=0. Якщо зустрінемо будь-яке однозначне число, то у цю змінну будемо запам’ятовувати його порядковий номер.
  3. У циклі будемо виконувати такі дії:
    1. Вводити наступне число у змінну a.
    2. Якщо введено однозначне число, то запам’ятовуємо його у змінну pa оператором p=a і його порядковий номер у змінну npa оператором npa=i. Кожне наступне однозначне число затирає попередні значення у цих змінних.
    3. Якщо введене не однозначне число, то нічого не робимо, тобто значення pa та npa не змінюється.
  4. Коли цикл закінчиться, тобто будуть введені всі n чисел, у змінних pa та npa залишаться значення для останнього однозначного числа. Якщо однозначних чисел не було, значення npa не зміниться і npa=0
  5. Перевіряємо npa:
    1. Якщо npa!=0, то виводимо на екран знайдені значення змінних
    2. У протилежному випадку виводимо 'NO'.

Програма пошуку останнього одноцифрового числа та його порядкового номеру.

#include <iostream>
using namespace std;

int main()
{
    int i, n, npa = 0, a, pa;  // i - лічильник, n - кількість чисел, a - поточне число
                               // npa - позиція останнього одноцифрового числа
                               // pa - значення останнього одноцифрового числа
    cin >> n;                  // Введення кількості чисел

    // Цикл обробки n чисел
    for (i = 1; i <= n; i++)
    {
        cin >> a;              // Введення поточного числа

        // Перевірка чи число одноцифрове (від 0 до 9)
        if (a / 10 == 0)
        {
            npa = i;           // Запам'ятовуємо позицію
            pa = a;            // Запам'ятовуємо значення
        }
    }

    // Виведення результату
    if (npa == 0) {
        cout << "no";          // Якщо не знайдено одноцифрових чисел
    } else {
        cout << pa << " " << npa;  // Вивід значення та позиції
    }

    return 0;
}

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

Програма виконує наступні дії:

  1. Зчитує кількість чисел n
  2. Послідовно зчитує n чисел
  3. Знаходить останнє одноцифрове число (від 0 до 9) у послідовності
  4. Виводить значення цього числа та його позицію
  5. Якщо одноцифрових чисел немає, виводить "no"

Приклад роботи:

Вхідні дані 1:
5
12 3 45 6 78

Вихід 1:
6 4

Вхідні дані 2:
4
10 20 30 40

Вихід 2:
no

Примітка: Умова a / 10 == 0 працює коректно, оскільки для чисел від 0 до 9 цілочисельне ділення на 10 дає 0.

Приклад 2

Ввести з клавіатури n цілих чисел. Знайти серед цих чисел перше однозначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Результат роботи програми

ВвідВивідПояснення
4
13 8 7 -12
8 2 Перше число 4 це кількість чисел.
Числа мають порядкові номери:
13 – 1, 8 – 2, 7 – 3, -12 – 4.
Серед цих чотирьох чисел однозначних два.
Перше 8 має порядковий номер 2.
Друге 7 має порядковий номер 3.
Нам потрібно перше з порядковим номером 2.
3
81 57 322
NoОднозначних чисел немає

Ця програма робить теж саме, що і попередня. Але вона повинна запам’ятовувати значення не всіх однозначних чисел, а тільки першого. Ознакою, того що однозначного числа ще не було, є значення npa==0.

Програма для пошуку першого одноцифрового числа

#include <iostream>
using namespace std;

int main()
{
    int i, n, npa = 0, a, pa;  // i - лічильник, n - кількість чисел
                               // npa - позиція першого одноцифрового числа
                               // pa - значення першого одноцифрового числа
    cin >> n;                  // Введення кількості чисел

    // Цикл обробки n чисел
    for (i = 1; i <= n; i++)
    {
        cin >> a;              // Введення поточного числа

        // Перевірка чи число одноцифрове (0-9) і ще не знайдено інших
        if (a / 10 == 0 && npa == 0)
        {
            npa = i;           // Запам'ятовуємо позицію першого одноцифрового
            pa = a;            // Запам'ятовуємо його значення
        }
    }

    // Виведення результату
    if (npa == 0) {
        cout << "no";          // Якщо не знайдено одноцифрових чисел
    } else {
        cout << pa << " " << npa;  // Вивід значення та позиції
    }

    return 0;
}

Детальне пояснення програми:

Програма виконує наступні дії:

  1. Зчитує кількість чисел n, які потрібно обробити
  2. Послідовно зчитує n чисел з вхідних даних
  3. Шукає перше одноцифрове число (від 0 до 9) у послідовності
  4. Запам'ятовує його значення та позицію
  5. Виводить результат у форматі "значення позиція" або "no", якщо таких чисел немає

Тестування роботи програми:

Тест 1 (знайдено число):

Вхідні дані:
6
12 3 45 6 78 9

Вихід:
3 2

Тест 2 (число не знайдено):

Вхідні дані:
4
10 20 30 40

Вихід:
no

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

Приклад 3

Ввести з клавіатури n дійсних чисел. Знайти серед цих чисел перше від’ємне число та його порядковий номер. Якщо від’ємних чисел немає, то вивести NO.

Результат роботи програми

ВвідВивідПояснення
4
 8.1
-3.2
 7.3
-2.5
-3.2 2 Перше число 4 це кількість чисел.
Числа мають порядкові номери: 8.1 – 1, -3.2 – 2, 7.3 – 3, -2.5 –4.
Серед цих чотирьох чисел від’ємних два.
Перше -3.2 має порядковий номер 2.
Друге -2.5 має порядковий номер 4.
Нам потрібно перше, з порядковим номером 2.
3
8 5 3
NoВід’ємних чисел немає

Змінні:

Вхідні:

Вихідні:

Проміжні:

Алгоритм

  1. Спочатку потрібно ввести кількість чисел.
  2. Потім потрібно встановити початкове значення змінній npa. Будемо вважати, що від’ємних чисел немає, тому npa=0. Якщо зустрінемо перше від’ємне число, то у цю змінну будемо запам’ятовувати його порядковий номер.
  3. У циклі будемо виконувати такі дії:
    1. Вводити наступне число у змінну a.
    2. Якщо введено перше (npa==0) від’ємне (a < 0) число, то запам’ятовуємо його значення у змінну pa оператором p=a і його порядковий номер у змінну npa оператором npa=i.
    3. Якщо введене не перше від’ємне число або не від’ємне число, то нічого не робимо, тобто значення npa та pa не змінюється.
  4. Коли цикл закінчиться, тобто будуть введені всі n чисел, у змінних pa та npa залишаться значення для першого від’ємного числа. Якщо від’ємних чисел не було, значення npa не зміниться і npa=0
  5. Перевіряємо npa:
    1. Якщо npa!=0, то виводимо на екран знайдені значення змінних pa, npa
    2. У протилежному випадку виводимо 'NO'.

Програма для пошуку першого від'ємного числа

#include <iostream>
using namespace std;

int main()
{
    int i, n, npa = 0;  // i - лічильник, n - кількість чисел
    float a, pa;        // a - поточне число, pa - перше від'ємне число

    cin >> n;           // Введення кількості чисел

    // Цикл для обробки n чисел
    for (i = 1; i <= n; i++)
    {
        cin >> a;       // Введення поточного числа

        // Перевірка чи число від'ємне і ще не знайдено інших
        if (a < 0 && npa == 0)
        {
            npa = i;    // Запам'ятовуємо позицію першого від'ємного
            pa = a;     // Запам'ятовуємо його значення
        }
    }

    // Виведення результату
    if (npa == 0) {
        cout << "no";   // Якщо не знайдено від'ємних чисел
    } else {
        cout << pa << " " << npa;  // Вивід значення та позиції
    }

    return 0;
}

Детальне пояснення програми

Ця програма виконує наступні дії:

  1. Зчитує кількість чисел n, які потрібно обробити
  2. Послідовно зчитує n чисел з вхідних даних
  3. Шукає перше від'ємне число у послідовності
  4. Запам'ятовує його значення та позицію
  5. Виводить результат у форматі "значення позиція" або "no", якщо від'ємних чисел немає

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

Тестування роботи програми

Тест 1 (знайдено від'ємне число):

Вхідні дані:
5
1.5 -2.3 4.7 5.6 -0.5

Вихід:
-2.3 2

Тест 2 (від'ємних чисел немає):

Вхідні дані:
4
1.2 3.4 5.6 7.8

Вихід:
no

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

Варіант 1

  1. Дано n цілих чисел. Знайти серед цих чисел перше від’ємне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє число, яке кратне 10 та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 2

  1. Дано n цілих чисел. Знайти серед цих чисел перше число, яке кратне 5 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє число =0 та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 3

  1. Дано n цілих чисел. Знайти серед цих чисел перше число, яке кратне 3 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє число, яке закінчується цифрою 1 та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 4

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

Варіант 5

  1. Дано n цілих чисел. Знайти серед цих чисел перше додатне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє число, яке кратне 4 та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 6

  1. Дано n цілих чисел. Знайти серед цих чисел перше число, яке закінчується цифрой 0 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє парне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 7

  1. Дано n цілих чисел. Знайти серед цих чисел перше число, яке закінчуються на 33 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє число, яке кратне 7 та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 8

  1. Дано n цілих чисел. Знайти серед цих чисел перше додатне однозначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє число, яке кратне b та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 9

  1. Дано n цілих чисел. Знайти серед цих чисел перше двозначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє двозначне число, яке закінчується на 6 та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 10

  1. Дано n цілих чисел. Знайти серед цих чисел перше число, яке закінчується цифрою 3 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє двозначне від’ємне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 11

  1. Дано n цілих чисел. Знайти серед цих чисел перше число, яке закінчується цифрою 5 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє додатне тризначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 12

  1. Дано n цілих чисел. Знайти серед цих чисел перше двозначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє число, яке закінчується на 00 та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 13

  1. Дано n цілих чисел. Знайти серед цих чисел перше двозначне число, яке складається з однакових цифр та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє число, яке кратне b та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 14

  1. Дано n цілих чисел. Знайти серед цих чисел перше число, яке належить інтервалу [x, y] та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє тризначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 15

  1. Дано n цілих чисел. Знайти серед цих чисел перше тризначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє від’ємне число, яке закінчується на 55 та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 16

  1. Дано n цілих чисел. Знайти серед цих чисел перше число, яке належить інтервалу [x, y] та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє додатне тризначне число, яке складається з різних цифр та його порядковий номер. Якщо таких чисел немає, то вивести NO.

Варіант 17

  1. Дано n цілих чисел. Знайти серед цих чисел перше двозначне число, яке складається з різних цифр та його порядковий номер. Якщо таких чисел немає, то вивести NO.
  2. Дано n цілих чисел. Знайти серед цих чисел останнє число, яке належить інтервалу [x, y] та кратне b та його порядковий номер. Якщо таких чисел немає, то вивести NO.

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