Завдання 3  Дедлайн 13 листопада

Задано три додатних дійсних числа. Необхідно визначити, чи всі вони рівні між собою з точністю 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;
}

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Максимальный размер загружаемого файла: 1 ГБ. Вы можете загрузить: изображение, аудио, видео, документ, таблица, интерактив, текст, архив, код, другое. Ссылки на YouTube, Facebook, Twitter и другие сервисы, вставленные в текст комментария, будут автоматически встроены. Перетащите файл сюда