Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Упростить выражение 
V
    Опции темы
tishaishii
Дата 8.11.2013, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Помогите упростить выражение:
Код
z := ( ( x / y ) > 2.0 ) or ( ( y / x ) > 2.0 )


Желательно получить формулу, по которой вычисляется "z", где используются только операторы: ">" , "+" , "-" , "/" , "*".

Это сообщение отредактировал(а) tishaishii - 8.11.2013, 12:15
PM MAIL ICQ Skype   Вверх
_Y_
Дата 8.11.2013, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



А что в этом выражении не так? Довол'нo простое. 

В некоторых языках Булевы значения представляются как 1 или 0. Тогда можно, наверное, наворочатъ как-то и избежатъ оператора OR. Но не думаю, что это будет выглядетъ как "упрощение".


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
tishaishii
Дата 8.11.2013, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



У меня "x" и "y" - это сложные длинные выражения, которые нет возможности записать в переменную.
В формуле не хочется два раза развёрнуто указывать  что такое "x" и "y".

Это сообщение отредактировал(а) tishaishii - 8.11.2013, 13:13
PM MAIL ICQ Skype   Вверх
Akina
Дата 8.11.2013, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Не указывай. Посчитай предварительно и сохрани в переменных.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
tishaishii
Дата 8.11.2013, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Цитата
У меня "x" и "y" - это сложные длинные выражения, которые нет возможности записать в переменную.


Это сообщение отредактировал(а) tishaishii - 8.11.2013, 14:06
PM MAIL ICQ Skype   Вверх
Akina
Дата 8.11.2013, 14:09 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Уточни, по какой причине "нет возможности записать в переменную". Ибо на каждую хитрую гайку...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 8.11.2013, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



tishaishii, а оператр проверки вхождения в интервал в языке есть? 

Если да, можно сделать что-то типа:

    
z := NOT ( x / y В_ИНТЕРВАЛЕ ОТ 1/2 до 2)


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
tishaishii
Дата 8.11.2013, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Отлично!
То, что нужно.

Добавлено через 6 минут
Постой.
Но в это формуле "x" и "y" не равназначны же.
То есть, "y" находится в делителе. Это делает его противостоящим "x".
По-моему, эта формула, чтобы быть равнозначной, должна выглядеть так:
Код
z := NOT ( x / y В_ИНТЕРВАЛЕ ОТ 1/2 до 2) OR NOT ( y / x В_ИНТЕРВАЛЕ ОТ 1/2 до 2) 

А мне хотелось бы избавиться от двойного указания "x" или "y" в формуле.
PM MAIL ICQ Skype   Вверх
_Y_
Дата 8.11.2013, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



tishaishii, а разве моя формула работать не будет? Вроде должна.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Akina
Дата 8.11.2013, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(tishaishii @  8.11.2013,  15:56 Найти цитируемый пост)
в это формуле "x" и "y" не равназначны же.

Только в том, что x может быть нулём, а y нет. В остальном - полная эквивалентность.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 9.11.2013, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Akina @  8.11.2013,  22:36 Найти цитируемый пост)
Только в том, что x может быть нулём, а y нет


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

Привык, что деление на ноль дает не ошибку, а плюс или минус бесконечность (есть такие константы в языке, на котором работаю). Соответственно и деление на ноль - вполне законная процедура в данном контексте. Бесконечность выйдет за интервал и даст z==TRUE.


Это сообщение отредактировал(а) _Y_ - 9.11.2013, 11:00


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
tishaishii
Дата 10.11.2013, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Спасибо.
PM MAIL ICQ Skype   Вверх
ТарасАтавин
Дата 30.11.2013, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Цитата(tishaishii @  8.11.2013,  13:11 Найти цитируемый пост)
которые нет возможности записать в переменную.
Тип не можешь вывести, или оператор присваивания забыл?

Добавлено через 2 минуты и 7 секунд
Цитата(_Y_ @  9.11.2013,  10:59 Найти цитируемый пост)
Привык, что деление на ноль дает не ошибку, а плюс или минус бесконечность (есть такие константы в языке, на котором работаю). Соответственно и деление на ноль - вполне законная процедура в данном контексте. 
А ноля на ноль?



--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0704 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.