Использование вложенного тернарного оператора для вычисления выражения - C (СИ)
Формулировка задачи:
Задание на C: Используя тернарную операцию выражение1 ? выражение2 : выражение3 и необходимые арифметические операции, составить программу, выполняющую следующие действия: для заданных целых x,y вычислить z = x-y, если x>y и z= y-x+1, если x<=y.
Надо написать Не могу понять, что неправильно, после выполнения y == 10, z == 14, почему-то программа идёт в ветвь с модулём, видимо.
только
с использованием тернарных операций, без if. Я написал так:#include <stdio.h> void main(void) { int x = -3, y = -5, z = -7; x > y ? (y > z ? x*=2, y*=2, z*=2 : (x = x >= 0 ? x:-x), (y = y >= 0 ? y:-y), (z = z >= 0 ? z:-z)) : (x = x >= 0 ? x:-x), (y = y >= 0 ? y:-y), (z = z >= 0 ? z:-z); printf("x = %d, y = %d, z = %d", x, y, z); }
Решение задачи: «Использование вложенного тернарного оператора для вычисления выражения»
textual
Листинг программы
((x > y && y > z) ? (x *=2, y *= 2, z *= 2) : (((x < 0) ? (x = -x) : (0)), ((y < 0) ? (y = -y) : (0)), ((z < 0) ? (z = -z) : (0))));
Объяснение кода листинга программы
(x > y && y > z)
- вычисляется условие, что x больше y, и y больше z. Значение этого выражения:true
илиfalse
.(x > y && y > z) ?
- если предыдущее выражение истинно, то выполняется следующий блок кода.(x *=2, y *= 2, z *= 2)
- выполняется операция умножения на 2 для переменных x, y и z.(((x < 0) ? (x = -x) : (0)), ((y < 0) ? (y = -y) : (0)), ((z < 0) ? (z = -z) : (0)))
- вычисляется условие для каждой переменной, если значение переменной меньше нуля, то она умножается на -1.(((x < 0) ? (x = -x) : (0)), ((y < 0) ? (y = -y) : (0)), ((z < 0) ? (z = -z) : (0)))
- результат предыдущего выражения присваивается соответствующим переменным.((x > y && y > z) ? (x *=2, y *= 2, z *= 2) : (((x < 0) ? (x = -x) : (0)), ((y < 0) ? (y = -y) : (0)), ((z < 0) ? (z = -z) : (0))))
- результат вычисления вложенного блока кода присваивается переменной x, y или z, в зависимости от значения выраженияx > y && y > z
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д