Задать вопрос
1 мая, 06:43

На с + + с тернарной операцией

Даны три целых числа. Требуется определить, превосходит ли максимум этих чисел удвоенную сумму двух других или нет.

Формат входных данных

С клавиатуры вводятся три целых числа через пробел, не превосходящие по модулю 105.

Формат выходных данных

Выведите "YES", если максимум превосходит удвоенную сумму двух других чисел, и "NO" в противном случае.

Примечания

Если максимальный элемент равен удвоенной сумме, то требуется вывести также YES

Примеры

входные данные выходные данные

3 5 1

NO

3 4 14

YES

+1
Ответы (1)
  1. 1 мая, 09:54
    0
    Алгоритм решения

    Предположим, что первое введённое число - максимальное. Тогда в ans мы будем хранить 1, если первое число не меньше удвоенной суммы второго и третьего, и 0, если меньше.

    Проверим - если второе число больше первого, мы запомним, что максимальное число у нас второе и пересчитаем ответ: 1, если второе число не меньше удвоенной суммы первого и третьего, 0 иначе.

    Точно так же проверим третье число: если оно больше нашего максимального, обновим его и ответ.

    После этого мы выведем "YES", если в ans хранится 1, "NO" иначе.

    Код

    #include

    using namespace std;

    int main () {

    int a, b, c;

    cin >> a >> b >> c;

    int mx = a;

    int ans = (a > = (b + c) * 2? 1 : 0) ;

    if (b > mx) {

    mx = b;

    ans = (b > = (a + c) * 2? 1 : 0) ;

    }

    if (c > mx) {

    mx = c;

    ans = (c > = (a + b) * 2? 1 : 0) ;

    }

    cout << (ans = = 1? "YES" : "NO") << endl;

    return 0;

    }

    Другие варианты1) int + тернарный оператор - > bool

    #include

    using namespace std;

    int main () {

    int a, b, c;

    cin >> a >> b >> c;

    int mx = a;

    bool ans = (a > = (b + c) * 2) ;

    if (b > mx) {

    mx = b;

    ans = (b > = (a + c) * 2) ;

    }

    if (c > mx) {

    mx = c;

    ans = (c > = (a + b) * 2) ;

    }

    cout << (ans? "YES" : "NO") << endl;

    return 0;

    }

    2) string ans

    #include

    using namespace std;

    int main () {

    int a, b, c;

    cin >> a >> b >> c;

    int mx = a;

    string ans = (a > = (b + c) * 2? "YES" : "NO") ;

    if (b > mx) {

    mx = b;

    ans = (b > = (a + c) * 2? "YES" : "NO") ;

    }

    if (c > mx) {

    mx = c;

    ans = (c > = (a + b) * 2? "YES" : "NO") ;

    }

    cout << ans << endl;

    return 0;

    }
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «На с + + с тернарной операцией Даны три целых числа. Требуется определить, превосходит ли максимум этих чисел удвоенную сумму двух других ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы