| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Упростить выражение |
| Автор: tishaishii 8.11.2013, 12:07 | ||
Помогите упростить выражение:
Желательно получить формулу, по которой вычисляется "z", где используются только операторы: ">" , "+" , "-" , "/" , "*". |
| Автор: _Y_ 8.11.2013, 13:04 |
| А что в этом выражении не так? Довол'нo простое. В некоторых языках Булевы значения представляются как 1 или 0. Тогда можно, наверное, наворочатъ как-то и избежатъ оператора OR. Но не думаю, что это будет выглядетъ как "упрощение". |
| Автор: tishaishii 8.11.2013, 13:11 |
| У меня "x" и "y" - это сложные длинные выражения, которые нет возможности записать в переменную. В формуле не хочется два раза развёрнуто указывать что такое "x" и "y". |
| Автор: Akina 8.11.2013, 14:05 |
| Не указывай. Посчитай предварительно и сохрани в переменных. |
| Автор: tishaishii 8.11.2013, 14:05 | ||
|
| Автор: Akina 8.11.2013, 14:09 |
| Уточни, по какой причине "нет возможности записать в переменную". Ибо на каждую хитрую гайку... |
| Автор: _Y_ 8.11.2013, 14:32 |
| tishaishii, а оператр проверки вхождения в интервал в языке есть? Если да, можно сделать что-то типа: z := NOT ( x / y В_ИНТЕРВАЛЕ ОТ 1/2 до 2) |
| Автор: tishaishii 8.11.2013, 14:56 | ||
| Отлично! То, что нужно. Добавлено через 6 минут Постой. Но в это формуле "x" и "y" не равназначны же. То есть, "y" находится в делителе. Это делает его противостоящим "x". По-моему, эта формула, чтобы быть равнозначной, должна выглядеть так:
А мне хотелось бы избавиться от двойного указания "x" или "y" в формуле. |
| Автор: _Y_ 8.11.2013, 21:37 |
| tishaishii, а разве моя формула работать не будет? Вроде должна. |
| Автор: Akina 8.11.2013, 22:36 |
Только в том, что x может быть нулём, а y нет. В остальном - полная эквивалентность. |
| Автор: _Y_ 9.11.2013, 10:59 |
Так, конечно, но допустимость операции тоже в зависимости от языка. Надо было оговорить, но, каюсь, не заметил. Привык, что деление на ноль дает не ошибку, а плюс или минус бесконечность (есть такие константы в языке, на котором работаю). Соответственно и деление на ноль - вполне законная процедура в данном контексте. Бесконечность выйдет за интервал и даст z==TRUE. |
| Автор: tishaishii 10.11.2013, 11:00 |
| Спасибо. |