Задано три додатних дійсних числа. Необхідно визначити, чи всі вони рівні між собою з точністю 0.1. Програма повинна вивести:
- 1 — якщо різниця між будь-якими двома числами строго менша за 0.1.
- 0 — у іншому випадку.
Обмеженням є те, що можна використовувати лише:
- std::cin, std::cout, std::endl — для вводу і виводу.
- три змінні типу double: a, b, c. Інших змінних в програмі використовувати не можна.
Приклад діалогу0.51 0.69 0.52
0
Відповідь
#include <iostream>
int main() {
double a;
double b;
double c;
std::cin >> a >> b >> c;
// N чисел еквівалентні з заданою точністю тоді і тільки тоді, коли
// найбільше і найменше з них еквівалентні з цією точністю.
// В даному випадку - треба визначити найбільше і найменше з трьох,
// знайти їх різницю, і порівняти з 0.1.
// Спочатку відсортуємо a та b так, що a - більше, b - менше з двох.
if (a < b) {
a = a + b;
b = a - b;
a = a - b;
}
// Тепер гарантується, що a >= b. Потрібно визначити, яким є значення
// с відносно a та b. Залежно від цього, можна одразу вивести результат.
if (c >= a) {
// c >= a >= b
std::cout << ((c - b) < 0.1);
}
else if (c >= b) {
// a >= c >= b
std::cout << ((a - b) < 0.1);
}
else {
// a >= b >= c
std::cout << ((a - c) < 0.1);
}
std::cout << std::endl;
return 0;
}
Добавить комментарий