Ми обчислювали елементи послідовності трьома способами:
Але ми завжди знали, скільки елементів послідовності потрібно обчислити та надрукувати, тому використовували оператор FOR.
В описаному нижче алгоритму, обчислення та друк елементів послідовності обмежується не їх кількістю, а значенням обчисленого елементу або різницею між значеннями двох сусідніх елементів.
Ясно, що для реалізації цього алгоритму потрібно використовувати цикл while, бо спочатку потрібно перевірити значення обчисленого елементу, а потім, в залежності від значення, або друкувати цей елемент та обчислювати наступний, або завершувати цикл.
Для послідовності
написати такі програми:
У цій задачі елементи послідовності обчислюються підставленням їх номера (i) у формулу. Підставимо та отримаємо:
a1=2.0000 a2=1.5000 a3=1.3333 a4=1.2500 a5=1.2000...
Дано дійсне число e. Друкувати елементи послідовності, поки ai >=e
| Ввід | Вивід |
|---|---|
| e=1.2 | 2.0000 1.5000 1.3333 1.2500 1.2000 |
#include <iostream>
using namespace std;
int main()
{
int i; // Лічильник ітерацій
float a, e; // a - поточний член послідовності, e - граничне значення
cin >> e; // Введення граничного значення
// Налаштування формату виводу (4 знаки після коми)
cout << fixed;
cout.precision(4);
i = 1; // Початкове значення лічильника
a = 2; // Початкове значення послідовності
// Генерація послідовності поки a >= e
while (a >= e)
{
cout << a << " "; // Вивід поточного значення
i++; // Інкрементація лічильника
a = i + 1.0 / i; // Обчислення наступного члена послідовності
}
return 0;
}
Дано дійсне число e. Знайти суму елементів послідовності, які ai >=e
| Ввід | Вивід |
|---|---|
| e=1.2 | s=7.2833 |
#include <iostream>
using namespace std;
int main()
{
int i; // Лічильник ітерацій
float a, e, s = 0; // a - член послідовності, e - граничне значення, s - сума
cin >> e; // Введення граничного значення
// Налаштування формату виводу (4 знаки після коми)
cout << fixed;
cout.precision(4);
i = 1; // Початкове значення лічильника
a = 2; // Початкове значення послідовності (a₁ = 2)
// Обчислення суми членів послідовності, поки a ≥ e
while (a >= e)
{
s = s + a; // Додавання поточного члена до суми
i++; // Інкрементація лічильника
a = i + 1.0/i; // Обчислення наступного члена послідовності (aₙ = n + 1/n)
}
cout << "S=" << s; // Виведення суми
return 0;
}
Дано дійсне число e. Знайти перший елемент послідовності та його порядковий номер, який < e
| Ввід | Вивід |
|---|---|
| e=1.2 | a=1.1667 i=6 |
#include <iostream>
using namespace std;
int main()
{
int i; // Лічильник ітерацій
float a, e; // a - поточний член послідовності, e - граничне значення
cin >> e; // Введення граничного значення
// Налаштування формату виводу (4 знаки після коми)
cout << fixed;
cout.precision(4);
i = 1; // Ініціалізація лічильника
a = 2; // Початкове значення послідовності (a₁ = 2)
// Цикл пошуку першого члена послідовності, меншого за 'e'
while (a >= e)
{
i++; // Інкрементація лічильника
a = i + 1.0 / i; // Обчислення наступного члена (aₙ = n + 1/n)
}
// Виведення результату
cout << "a=" << a << " i=" << i;
return 0;
}
Дано дійсне число e. Друкувати елементи послідовності, поки ai-1- ai >=e
Ця задача відрізняється від задачі у прикладі 1 тим, що елементи послідовності обчислюються та виводяться на екран тоді, коли різниця між „попереднім” та „наступним” елементами досить велика та перевищує введене число e.
Тобто потрібно додатково використовувати вже відомий алгоритм: для зберігання елементів послідовності використовувати дві змінних – „попереднє” (a1) та „наступне” (a2). Причому, кожний елемент послідовності (окрім першого та останнього) на одному витку циклу є „наступним”, а на другому витку „попереднім”.
| Ввід | Вивід |
|---|---|
| 0.03 | 2.0000 1.5000 1.3333 1.2500 1.2000 1.1667 |
| 0.02 | 2.0000 1.5000 1.3333 1.2500 1.2000 1.1667 1.1429 |
Вхідні:
Вихідні:
Проміжні:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int i; // Лічильник ітерацій
float a1, a2, e; // a1, a2 - попередній та поточний члени послідовності, e - точність
cin >> e; // Введення точності обчислень
// Налаштування формату виводу (4 знаки після коми)
cout << fixed;
cout.precision(4);
i = 1; a1 = 2; // Ініціалізація першого члена
cout << a1 << " "; // Виведення першого члена
i = 2; a2 = 1.5; // Ініціалізація другого члена
// Цикл обчислення послідовності поки різниця між членами ≥ e
while (abs(a1 - a2) >= e)
{
cout << a2 << " "; // Виведення поточного члена
a1 = a2; // Оновлення попереднього значення
i++; // Інкрементація лічильника
a2 = 1 + 1.0 / i; // Обчислення нового члена послідовності
}
return 0;
}
Для послідовності Фібоначчи
написати такі програми:
У цій задачі кожний елемент послідовності обчислюється через два попередніх. Отримаємо:
f1=1 f2=1 f3=2 f4=3 f5=5 f6=8...
Дано натуральне число e. Обчислювати елементи послідовності, поки ai <=e
| Ввід | Вивід |
|---|---|
| e=10 | 1 1 2 3 5 8 |
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long int e, f1, f2, f3; // e - граничне значення, f1,f2,f3 - члени послідовності Фібоначчі
cin >> e; // Введення граничного значення
f1 = 1; // Ініціалізація першого члена
cout << f1 << " "; // Виведення першого члена
f2 = 1; // Ініціалізація другого члена
// Генерація послідовності Фібоначчі до перевищення значення 'e'
while (f2 <= e)
{
cout << f2 << " "; // Виведення поточного члена
f3 = f1 + f2; // Обчислення наступного члена
f1 = f2; // Оновлення значень для наступної ітерації
f2 = f3;
}
return 0;
}
У цьому прикладі до циклу присвоюємо значення двом першим елементам послідовності та перший елемент виводимо на екран.
Потім, перед виводом на екран другого елемента послідовності він перевіряється, чи він менше ніж е? Якщо менше, то він виводиться на екран та обчислюється третій елемент. Потім значення елементів переприсвоюються: в якості першого елемента беремо другий, в якості другого беремо третій. Переходимо на наступний віток циклу та знов перевіряємо другий елемент.
Дано натуральне число e. Знайти суму елементів послідовності, які ai <=e.
| Ввід | Вивід |
|---|---|
| e=10 | s=20 |
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long int e, f1, f2, f3, s; // e - граничне значення, f1,f2,f3 - члени Фібоначчі, s - сума
cin >> e; // Введення граничного значення
f1 = 1; // Перший член послідовності
s = f1; // Початкове значення суми
f2 = 1; // Другий член послідовності
// Обчислення суми чисел Фібоначчі, що не перевищують 'e'
while (f2 <= e)
{
s += f2; // Додавання поточного члена до суми
f3 = f1 + f2; // Обчислення наступного члена
f1 = f2; // Оновлення значень для наступної ітерації
f2 = f3;
}
cout << "S=" << s; // Виведення суми
return 0;
}
Для обчислення суми елементів можна використовувати програму обчислення елементів послідовності. У цій програмі замість виводу елементу на екран, написати оператор додавання цього елемента до суми. Обчислену суму вивести на екран після завершення циклу.
Дано натуральне число e. Знайти перший елемент та його порядковий номер, який > e
| Ввід | Вивід |
|---|---|
| e=10 | f=13 i=7 |
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long int e, f1, f2, f3, i; // e - граничне значення, f1-f3 - числа Фібоначчі, i - лічильник
cin >> e; // Введення граничного значення
i = 1; f1 = 1; // Ініціалізація першого числа (F₁=1)
i = 2; f2 = 1; // Ініціалізація другого числа (F₂=1)
// Генерація чисел Фібоначчі до перевищення граничного значення
while (f2 <= e)
{
i++; // Інкрементація лічильника
f3 = f1 + f2; // Обчислення наступного числа (Fₙ = Fₙ₋₁ + Fₙ₋₂)
f1 = f2; // Оновлення значень для наступної ітерації
f2 = f3;
}
// Виведення першого числа, що перевищує 'e' та його порядкового номеру
cout << "f=" << f2 << " i=" << i;
return 0;
}
Для рішення цієї задачі теж можна використовувати програму обчислення елементів послідовності. Але щоб знайти перший ai > е, потрібно обчислювати елементи aі <= e. Оператор виводу елементу на екран потрібно виконати після завершення циклу.
Дано натуральне число n. Чи є воно елементом цієї послідовності?
| Ввід | Вивід |
|---|---|
| 15 | no |
| 13 | yes |
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long int n, f1, f2, f3; // n - число для перевірки, f1-f3 - числа Фібоначчі
cin >> n; // Введення числа для перевірки
f1 = 1; f2 = 1; // Ініціалізація перших двох чисел Фібоначчі
// Генерація чисел Фібоначчі, доки не досягнемо або не перевищимо 'n'
do
{
f3 = f1 + f2; // Обчислення наступного числа Фібоначчі
f1 = f2; // Оновлення значень для наступної ітерації
f2 = f3;
} while (f3 < n); // Умова продовження циклу
// Перевірка чи є введене число числом Фібоначчі
if (f3 == n)
{
cout << "yes"; // Якщо число належить послідовності
}
else
{
cout << "no"; // Якщо число не належить послідовності
}
return 0;
}
- Дано дійсне число e. З чотирма знаками після крапки друкувати числа
i=2,3... поки ai >=e.
- Дано дійсне число e. З чотирма знаками після крапки друкувати числа
i=1,2,3... поки ai <=e.
- Дано дійсне число e. З чотирма знаками після крапки друкувати числа
i=2,3... поки ai<=e.
- Дано дійсне число e. З трьома знаками після крапки знайти суму всіх чисел ai>=e, якщо числа
i=1,2,3...
- Дано ціле число e. Знайти суму всіх чисел ai<=e, якщо числа
i=1,2,3...
- Дано дійсне число e. Знайти серед чисел
i=1,2,3... перше число ai< e і його номер i.
- Дано дійсні числа e, z(0< z <1), q(q >e). Знайти серед чисел
i=2,3... перше число ai< e і його номер i.
- Дано дійсне число e. Знайти серед чисел
i=2,3... перше число ai>e і його номер i.
- Дано натуральні числа e, x. Друкувати числа
i=1,2,3... поки ai-ai-1<=e
- Дано дійсне число e. З трьома знаками після крапки друкувати числа
i=2,3... поки
.
- Дано дійсне число e. З 7 знаками після крапки знайти суму всіх чисел
, i=2,3... , у яких
![]()
- Дано дійсне число e. З 7 знаками після крапки знайти суму всіх чисел
, i=2,3..., у яких
![]()
- Дано дійсне число e та натуральне число x. Знайти серед чисел
i=1,2,3... перше число ai і його номер i , таке що
.
- Дано дійсні додатні числа e, x, b. Знайти серед чисел
i=1,2,3... , перше число ai і його номер i , таке що
.
- Дано натуральні числа e, z (z>1), q (q< e). Чи є серед чисел
i=2,3... , число e?
- Дано натуральне число b. Чи є це число серед чисел послідовності
i=3,4...?
- Дано натуральні числа x, b, c, d, q, r. Чи є число x серед чисел послідовності
i=3,4...? Якщо ні, то надрукувати перше число ai і його номер i , таке що ai> x.