Здравствуйте. Пишу интерпретатор формул, и тут натыкаюсь на такую вот проблему:
пример: (1-2^2) несколькими строчными калькуляторами высчитывается (например, Derive) и ответ получается -3.
Мне же лично такой ответ не совсем понятен, ибо если решить пример 1-2^2 по действиям, то выйдет, что:
1. -2^2=4
2. 1+4=5
То есть, ответ 5.
Ведь при подсчете примера (1-2*-2), мы сперва сосчитаем -2*-2, а потом уже 1+4=5 (причем Derive думает так же). Так почему же тогда 1-2^2 = -3 ? И как нужно правильно?
Спасибо.
PS А вот если будет , тогда ответ, конечно же, -3. Но ведь и это же разные вещи.
Объясните, пожалуйста, одну простейшую вещь...
Объясните, пожалуйста, одну простейшую вещь...
Последний раз редактировалось Rody 28 ноя 2019, 17:18, всего редактировалось 1 раз.
Причина: test
Причина: test
Объясните, пожалуйста, одну простейшую вещь...
Rody писал(а):Source of the post
Здравствуйте. Пишу интерпретатор формул, и тут натыкаюсь на такую вот проблему:
пример: (1-2^2) несколькими строчными калькуляторами высчитывается (например, Derive) и ответ получается -3.
Мне же лично такой ответ не совсем понятен, ибо если решить пример 1-2^2 по действиям, то выйдет, что:
1. -2^2=4
2. 1+4=5
То есть, ответ 5.
Ведь при подсчете примера 1-2*-2, мы сперва сосчитаем -2*-2, а потом уже 1+4=5 (причем Derive думает так же). Так почему же тогда 1-2^2 = -3 ? И как нужно правильно?
Спасибо.
Правильно -3. Здесь "-" - это знак вычитания, поэтому сначала выполняется возведение в степень, т.е. , а потом вычитание. Вот если бы было , то ответ был бы 5.
Последний раз редактировалось AV_77 28 ноя 2019, 17:18, всего редактировалось 1 раз.
Причина: test
Причина: test
Объясните, пожалуйста, одну простейшую вещь...
Почему вы так решили? В школе учат по-другому.
Последний раз редактировалось frim_ax 28 ноя 2019, 17:18, всего редактировалось 1 раз.
Причина: test
Причина: test
Объясните, пожалуйста, одну простейшую вещь...
Ну вот как учили вшколе
1-22=1-1*2*2=1-4=-3
Странные у Вас вопросы
Последний раз редактировалось Dimka1 28 ноя 2019, 17:18, всего редактировалось 1 раз.
Причина: test
Причина: test
Объясните, пожалуйста, одну простейшую вещь...
Представим на секундочку, что вы правы. Тогда что такое 123 - 123, 1+23, 12+3 или 1+2+3? Ведь в приведенной вами формуле знака + нет, от у вас, выходит, ПОДРАЗУМЕВАЕТСЯ?
Rody писал(а):Source of the post
PS А вот если будет , тогда ответ, конечно же, -3. Но ведь и это же разные вещи.
Вы когда-нибудь о приоритетах операций слышали? Или хоть какой-то язык программирования с арифметическими операторами изучали?
Последний раз редактировалось kiv 28 ноя 2019, 17:18, всего редактировалось 1 раз.
Причина: test
Причина: test
Объясните, пожалуйста, одну простейшую вещь...
1-2^2 = 1 - (2^2) по правилу того что сначала делаются все операции в скобках, потом все возведения в степень делаются до всех умножений которые делаются до всех сложений. В программировании это может реализовываться при помощи грамматик, которые могут быть реализованы сложно как конечные
автоматы, а могут быть реализованы и как функции на каком то языке. Но запись грамматики - это практически общепринятый способ описания правил написания выражений.
Украдено для Вас отсюда [url=http://pages.cs.wisc.edu/~cs536-1/NOTES/3.CFG.html]http://pages.cs.wisc.edu/~cs536-1/NOTES/3.CFG.html[/url]
exp →
exp PLUS term |
exp MINUS term |
term
term →
term TIMES factor |
term DIVIDE factor |
factor
factor →
exponent POW factor |
exponent
exponent →
MINUS exponent |
final
final → INTLITERAL |
LPAREN exp RPAREN
Здесь видно как можно разобрать выражение с учетом приоритетов, скобок и всего прочего.
В случае factor неявно ограничена ассоциативность - то что в степень возводят справа налево
автоматы, а могут быть реализованы и как функции на каком то языке. Но запись грамматики - это практически общепринятый способ описания правил написания выражений.
Украдено для Вас отсюда [url=http://pages.cs.wisc.edu/~cs536-1/NOTES/3.CFG.html]http://pages.cs.wisc.edu/~cs536-1/NOTES/3.CFG.html[/url]
exp →
exp PLUS term |
exp MINUS term |
term
term →
term TIMES factor |
term DIVIDE factor |
factor
factor →
exponent POW factor |
exponent
exponent →
MINUS exponent |
final
final → INTLITERAL |
LPAREN exp RPAREN
Здесь видно как можно разобрать выражение с учетом приоритетов, скобок и всего прочего.
В случае factor неявно ограничена ассоциативность - то что в степень возводят справа налево
Последний раз редактировалось folk 28 ноя 2019, 17:18, всего редактировалось 1 раз.
Причина: test
Причина: test
Объясните, пожалуйста, одну простейшую вещь...
Есть такое выражение
"Метать бисер перед свиньями"
"Метать бисер перед свиньями"
Последний раз редактировалось mihailm 28 ноя 2019, 17:18, всего редактировалось 1 раз.
Причина: test
Причина: test
Объясните, пожалуйста, одну простейшую вещь...
Это мудрое извлечение из Библии. А у нас мораторий на это.
Последний раз редактировалось Таланов 28 ноя 2019, 17:18, всего редактировалось 1 раз.
Причина: test
Причина: test
Объясните, пожалуйста, одну простейшую вещь...
Dimka1 писал(а):Source of the post
Ну вот как учили вшколе
1-22=1-1*2*2=1-4=-3
Странные у Вас вопросы
Спасибо, что расписали. Видимо, в школе я упустил этот момент.
kiv писал(а):Source of the post
Представим на секундочку, что вы правы. Тогда что такое 123 - 123, 1+23, 12+3 или 1+2+3? Ведь в приведенной вами формуле знака + нет, от у вас, выходит, ПОДРАЗУМЕВАЕТСЯ?Rody писал(а):Source of the post
PS А вот если будет , тогда ответ, конечно же, -3. Но ведь и это же разные вещи.
Вы когда-нибудь о приоритетах операций слышали? Или хоть какой-то язык программирования с арифметическими операторами изучали?
Дело в том, что при 1-2*-2, в данном формуле так же знака + нет, но, тем не менее, в конечном счете, он все-таки появляется.
О приоритетах мне, разумеется, известно, и языки программирования тоже изучал и продолжаю изучать.
Теперь, хоть четкий ответ мне уже и был дан, попробую еще раз высказать свою концепцию, и тогда станет ясно почему я засомневался.
1-2*-2=1+4=5
Мне почему то казалось, что эта запись вполне логична: 1-2^2=1-2*-2=5
Но как выяснилось, в данном случае, правильно будет: 1-2^2=1-1*2*2=1-4=-3
folk писал(а):Source of the post
1-2^2 = 1 - (2^2) по правилу того что сначала делаются все операции в скобках, потом все возведения в степень делаются до всех умножений которые делаются до всех сложений. В программировании это может реализовываться при помощи грамматик, которые могут быть реализованы сложно как конечные
автоматы, а могут быть реализованы и как функции на каком то языке. Но запись грамматики - это практически общепринятый способ описания правил написания выражений.
Украдено для Вас отсюда [url=http://pages.cs.wisc.edu/~cs536-1/NOTES/3.CFG.html]http://pages.cs.wisc.edu/~cs536-1/NOTES/3.CFG.html[/url]
exp →
exp PLUS term |
exp MINUS term |
term
term →
term TIMES factor |
term DIVIDE factor |
factor
factor →
exponent POW factor |
exponent
exponent →
MINUS exponent |
final
final → INTLITERAL |
LPAREN exp RPAREN
Здесь видно как можно разобрать выражение с учетом приоритетов, скобок и всего прочего.
В случае factor неявно ограничена ассоциативность - то что в степень возводят справа налево
Благодарю. Еще подскажите, пожалуйста, где можно посмотреть переводы ф-ций с англ. языка.
Зря вы так. Видимо, это следует от того, что если человеку что-то непонятно, то сколько ты ему это не объясняй - все бесполезно, ибо он все равно этого никогда не поймет... Это не так.
А тем, кто все-таки решается помочь неучу - честь и хвала.
Последний раз редактировалось Rody 28 ноя 2019, 17:18, всего редактировалось 1 раз.
Причина: test
Причина: test
Объясните, пожалуйста, одну простейшую вещь...
Rody писал(а):Source of the post
Теперь, хоть четкий ответ мне уже и был дан, попробую еще раз высказать свою концепцию, и тогда станет ясно почему я засомневался.
1-2*-2=1+4=5
Мне почему то казалось, что эта запись вполне логична: 1-2^2=1-2*-2=5
Но как выяснилось, в данном случае, правильно будет: 1-2^2=1-1*2*2=1-4=-3
Видимо в школе не только приоритет операций мимо вас прошел, но и скобки вы не изучали. Запись бессмысленна без скобок. Должно быть либо , либо .
Последний раз редактировалось AV_77 28 ноя 2019, 17:18, всего редактировалось 1 раз.
Причина: test
Причина: test
Кто сейчас на форуме
Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 4 гостей