Назад
Зміст
Вперед
Задачі на пошук першого та останнього числа з заданою властивістю
За даним алгоритмом можна з декількох чисел знаходити перші (останні) числа з будь-якою властивістю.
Правило
|
При складанні програм на знаходження першого або останнього числа з заданою властивістю з декількох чисел, потрібно пам’ятати:
- Тип першого (останнього) числа співпадає з типом чисел, серед яких його обирають
- Тип порядкових номерів завжди цілийli
- Перед циклом потрібно присвоїти початкове значення, що дорівнює 0 змінній в який буде знаходитись порядковий номер шуканого числа.
У циклі,
- Вводиться наступне число a
- Це число a та його порядковий номер запам’ятовують якщо:
- Для знаходження першого числа – введене число a відповідає вказаній властивості та є першим з таких чисел (порядковий номер шуканого
числа дорівнює 0)
- Для знаходження останнього числа – для всіх чисел a, що відповідають вказаній властивості
- якщо введене число a не відповідає вказаній властивості, то значення a та його порядковий номер не запам’ятовують.
- Після завершення циклу знайдені значення виводяться на екран.
|
Приклад 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 | Однозначних чисел немає |
Змінні:
Вхідні:
- n – кількість чисел (цілого типу)
- a – число (цілого типу, за умовою)
Вихідні:
- pa–останнє однозначне число (цілого типу типу, тому що a ціле).
- npa– порядковий номер останнього однозначного числа (номери завжди цілого типу)
Проміжні:
- i – параметр циклу (цілого типу)
Алгоритм
- Спочатку потрібно ввести кількість чисел
- Потім потрібно встановити початкове значення змінній npa. Будемо вважати, що однозначних чисел немає, тому npa=0.
Якщо зустрінемо будь-яке однозначне число, то у цю змінну будемо запам’ятовувати його порядковий номер.
- У циклі будемо виконувати такі дії:
- Вводити наступне число у змінну a.
- Якщо введено однозначне число, то запам’ятовуємо його у змінну pa оператором p=a
і його порядковий номер у змінну npa оператором npa=i.
Кожне наступне однозначне число затирає попередні значення у цих змінних.
- Якщо введене не однозначне число, то нічого не робимо, тобто значення pa та npa не змінюється.
- Коли цикл закінчиться, тобто будуть введені всі n чисел, у змінних pa та npa залишаться значення для
останнього однозначного числа. Якщо однозначних чисел не було, значення npa не зміниться і npa=0
- Перевіряємо npa:
- Якщо npa!=0, то виводимо на екран знайдені значення змінних
- У протилежному випадку виводимо '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;
}
Пояснення роботи програми:
Програма виконує наступні дії:
- Зчитує кількість чисел
n
- Послідовно зчитує
n чисел
- Знаходить останнє одноцифрове число (від 0 до 9) у послідовності
- Виводить значення цього числа та його позицію
- Якщо одноцифрових чисел немає, виводить "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;
}
Детальне пояснення програми:
Програма виконує наступні дії:
- Зчитує кількість чисел
n, які потрібно обробити
- Послідовно зчитує
n чисел з вхідних даних
- Шукає перше одноцифрове число (від 0 до 9) у послідовності
- Запам'ятовує його значення та позицію
- Виводить результат у форматі "значення позиція" або "no", якщо таких чисел немає
Тестування роботи програми:
Тест 1 (знайдено число):
Вхідні дані:
6
12 3 45 6 78 9
Вихід:
3 2
Тест 2 (число не знайдено):
Вхідні дані:
4
10 20 30 40
Вихід:
no
Ключові особливості:
- Умова
a / 10 == 0 визначає одноцифрові числа (0-9)
- Додаткова умова
npa == 0 гарантує, що буде знайдено лише перше одноцифрове число
- Програма зупиняє пошук після знаходження першого відповідного числа
- Використовується цілочисельне ділення для перевірки кількості цифр
Приклад 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 | Від’ємних чисел немає |
Змінні:
Вхідні:
- n – кількість чисел (цілого типу)
- a – число (дійсного типу, за умовою)
Вихідні:
- pa–перше від’ємне число (дійсного типу типу, тому що a дійсне).
- npa– порядковий номер першого від’ємного числа (номери завжди цілого типу)
Проміжні:
- i – параметр циклу (цілого типу)
Алгоритм
- Спочатку потрібно ввести кількість чисел.
- Потім потрібно встановити початкове значення змінній npa. Будемо вважати, що від’ємних чисел немає, тому npa=0.
Якщо зустрінемо перше від’ємне число, то у цю змінну будемо запам’ятовувати його порядковий номер.
- У циклі будемо виконувати такі дії:
- Вводити наступне число у змінну a.
- Якщо введено перше (npa==0) від’ємне (a < 0) число, то запам’ятовуємо його значення у змінну pa оператором p=a
і його порядковий номер у змінну npa оператором npa=i.
- Якщо введене не перше від’ємне число або не від’ємне число, то нічого не робимо, тобто значення npa та pa не змінюється.
- Коли цикл закінчиться, тобто будуть введені всі n чисел, у змінних pa та npa залишаться значення для першого від’ємного числа.
Якщо від’ємних чисел не було, значення npa не зміниться і npa=0
- Перевіряємо npa:
- Якщо npa!=0, то виводимо на екран знайдені значення змінних pa, npa
- У протилежному випадку виводимо '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;
}
Детальне пояснення програми
Ця програма виконує наступні дії:
- Зчитує кількість чисел
n, які потрібно обробити
- Послідовно зчитує
n чисел з вхідних даних
- Шукає перше від'ємне число у послідовності
- Запам'ятовує його значення та позицію
- Виводить результат у форматі "значення позиція" або "no", якщо від'ємних чисел немає
Ключові особливості:
a < 0 - умова для перевірки від'ємних чисел
npa == 0 - додаткова умова, що гарантує знаходження лише першого від'ємного числа
- Використовуються змінні типу
float для роботи з дійсними числами
- Програма зупиняє пошук після знаходження першого від'ємного числа
Тестування роботи програми
Тест 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
- Дано n цілих чисел. Знайти серед цих чисел перше від’ємне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє число, яке кратне 10 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 2
- Дано n цілих чисел. Знайти серед цих чисел перше число, яке кратне 5 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє число =0 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 3
- Дано n цілих чисел. Знайти серед цих чисел перше число, яке кратне 3 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє число, яке закінчується цифрою 1 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 4
- Дано n цілих чисел. Знайти серед цих чисел перше додатне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє число, яке закінчується цифрою 2 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 5
- Дано n цілих чисел. Знайти серед цих чисел перше додатне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє число, яке кратне 4 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 6
- Дано n цілих чисел. Знайти серед цих чисел перше число, яке закінчується цифрой 0 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє парне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 7
- Дано n цілих чисел. Знайти серед цих чисел перше число, яке закінчуються на 33 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє число, яке кратне 7 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 8
- Дано n цілих чисел. Знайти серед цих чисел перше додатне однозначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє число, яке кратне b та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 9
- Дано n цілих чисел. Знайти серед цих чисел перше двозначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє двозначне число, яке закінчується на 6 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 10
- Дано n цілих чисел. Знайти серед цих чисел перше число, яке закінчується цифрою 3 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє двозначне від’ємне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 11
- Дано n цілих чисел. Знайти серед цих чисел перше число, яке закінчується цифрою 5 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє додатне тризначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 12
- Дано n цілих чисел. Знайти серед цих чисел перше двозначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє число, яке закінчується на 00 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 13
- Дано n цілих чисел. Знайти серед цих чисел перше двозначне число, яке складається з однакових цифр та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє число, яке кратне b та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 14
- Дано n цілих чисел. Знайти серед цих чисел перше число, яке належить інтервалу [x, y] та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє тризначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 15
- Дано n цілих чисел. Знайти серед цих чисел перше тризначне число та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє від’ємне число, яке закінчується на 55 та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 16
- Дано n цілих чисел. Знайти серед цих чисел перше число, яке належить інтервалу [x, y] та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє додатне тризначне число, яке складається з різних цифр та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Варіант 17
- Дано n цілих чисел. Знайти серед цих чисел перше двозначне число, яке складається з різних цифр та його порядковий номер. Якщо таких чисел немає, то вивести NO.
- Дано n цілих чисел. Знайти серед цих чисел останнє число, яке належить інтервалу [x, y] та кратне b та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Назад
Зміст
Вперед