0 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 98
|
|
1 | |
Калькулятор с парсингом ввода04.10.2014, 13:05. Показов 16424. Ответов 78
Метки нет (Все метки)
Всем привет, не так давно начал постигать c++. Возник вопрос как сделать программу-калькулятор, в которую можно вводить свои числа и арифметические операции.
Пример: Выскакивает консолька и пользователь вводит "17 + 19 * 6 - 8", то есть пользователь не ограничен в действиях.
0
|
04.10.2014, 13:05 | |
Ответы с готовыми решениями:
78
Простой калькулятор и калькулятор с парсингом Калькулятор с парсингом строки Калькулятор с парсингом арифметических выражений Корень и дробная часть. Калькулятор с парсингом |
_Ivana
|
05.10.2014, 16:37
Калькулятор с парсингом ввода
#61
|
Не по теме: как неудобно, что на этом форуме в цитату не вставляется ссылка на цитируемое место!... И где мне теперь искать контекст фразы, откуда можно будет понять, что имел ввиду автор под "такими решениями"? Придется бегать по всей теме, и то хорошо если это в текущей теме.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
05.10.2014, 16:42 | 62 |
Ващето вставлсяется. И "такие решения" относятся не к цитате, а к тому посту, где написана сама фраза.
0
|
Комп_Оратор)
|
|
05.10.2014, 16:50 | 63 |
Вот тут опять согласен с taras atavin.
Скобки выделяют приоритет выражения, но выражением не являются, так же как не является выражением и постфиксный минус. По крайней мере до тех пор, пока не будет сказано что-то вроде: -"Я придумал новую запись математических выражений и она выгодна тем-то и тем-то...". Но и тут я, скорее-всего буду в числе скептиков. Простая математическая нотация ведь вещь очень консервативная. Даже изменение простого и нечасто применимого правила правописания, принятое поспешно, может повлечь совершенно неожиданные и вряд ли приятные последствия. Всё на свете начиная от правил эксплуатации и проектирования до уставов и кодексов, нужно пересматривать..., а потом переучивать всех... Это должно быть доказано, как совершенно необходимое. зы: У меня на такое ругается и говорит где и почему ка-ка, ещё задолго до разбора. Добавлено через 6 минут Интересное предложение. Попробуйте сюда его. https://www.cyberforum.ru/abou... 44611.html Серьезно, на этот раз. Там как раз может понравиться.
0
|
05.10.2014, 17:25 | 64 |
IGPIGP, хорошо, давайте подискутируем Что скажете о таких выражениях:
Добавлено через 6 минут Добавлено через 26 минут
0
|
Комп_Оратор)
|
|
05.10.2014, 17:36 | 65 |
Не скажу ничего экстраординарного:
Вполне законны и должны парситься. Не должно паситься. Если Вы не установите новых правил и не объясните юзеру как этим пользоваться и зачем ему это нужно. О проблемах этого пути я уже высказался. Тоже не должно быть. В этой теме, есть ещё весёлые места. Как то, - приоритет и ассоциативность. Причем в нескольких аспектах. Самый для меня интересный, - не ассоциативность компьютерных вычислений с точки зрения сохранения значимости. В арифметических выражениях, это можно проиллюстрировать: 10^20 + 1 - 10^20 большинство современных систем выдаст 0 вместо 1. Как с этим бороться в пределах одного уровня вложенности, понятно. А вот для разных - Там тоже просматриваются возможности, но сложность сильно возрастает. В части оценки потери значимости, в основном. С удовольствием бы почитал, что-то из серии: "Компьютерные вычисления для садоводов". И из анекдотов. Существует классическая левая ассоциативность для операции возведения в степень. То есть: 3^2^3 = (3^2)^3 и экселевская (молодцы майкро-проггеры, - а чего париться!) : 3^2^3 = 3^(2^3) С возведением в степень, вообще много интересного ещё. (имхо) Но любой сложный по природе предмет если не ограничиться поставленным вопросом (в разумных пределах ограничиться, конечно) может стать вечной темой.
0
|
05.10.2014, 17:50 | 66 |
Хорошо, когда кто-нибудь создает такую с виду безобидную тему, но в которой есть куда развернуться Сколько всего интересного узнаёшь.
А насчет степеней я был не в курсе Экселевской трактовки. Джоэл Спольски молодец (кроме шуток). Но по моему имху как раз правая ассоциативность степени более логична, хотя левую гораздо проще реализовать в большинстве парсеров.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
05.10.2014, 17:52 | 67 |
Ну и где здесь ассоциативность? Степень имеет высший приоритет, ((10^20)+1)-(10^20)=1, (10^20)+(1-(10^20))=1. Ассоциативность важна в том случае, когда операнды вычисляются/исполняются и при их вычислении/исполнении происходят побочные эффекты, а здесь как ни ассоциируй, ничего не поменяется.
0
|
_Ivana
|
05.10.2014, 17:53
#68
|
Не по теме: taras atavin, вы бы что-ли тон сменили с менторского на противоположный... Ведь садитесь в лужу в 70% ваших постов!
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
05.10.2014, 17:55 | 69 |
А вот здесь она как раз важна. В левой ассоциативности здесь 729, а в правой 7 625 597 484 987.
0
|
Комп_Оратор)
|
|
05.10.2014, 18:19 | 70 |
Возьмите встроенный калькулятор от Майкрософт (хорошая вещь, кстати) и проверьте. При вычислении определителей объём вычислений сильно зависит от размера матрицы, к слову, и там ошибка потери значимости может здорово сказываться.
Добавлено через 5 минут Математические операции равного приоритета, выполняются справа-на-лево. По крайней мере там, где пишут и читают справа-на-лево. Это просто соглашение, конечно, но не придерживаться грешно же?
0
|
05.10.2014, 18:30 | 71 |
Данунафиг! Я всю жизнь вычитал и делил слева-направо
Арабские страны, Израиль и Китай предлагаю не рассматривать - мы на русскоязычном форуме В случае степени левую ассоциативность предполагать нелогично, ибо x^y^z в развороте математической нотации - иерархическая тройка (в латексе набрал бы, но долго разбираться), и внешние (правые) возведения выполняются первыми. Добавлено через 6 минут x^y^z = , заодно в местном латексе поупражняюсь.
1
|
Комп_Оратор)
|
|
05.10.2014, 18:35 | 72 |
Дык, я тоже...
Для степени вопрос не бесспорный, но надо сказать, что я всё перепутал:
Сообщение от viki
Я же говорю, - бывает напишешь, - самому интересно читать.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
05.10.2014, 18:45 | 75 |
0
|
Комп_Оратор)
|
|
05.10.2014, 18:50 | 76 |
Та я ж сказал уже:
В обоих предложениях одинаково же должно было быть. Только слева-направо! Я печатаю сейчас слева-напра..., - да, - направо. И вчера так было... И про степни тоже наоборот всё. Трудно печатать в темноте, да ещё урывками. Или Вы поверили, что я таки справо налево арифметику считаю?
0
|
05.10.2014, 18:55 | 77 |
Однако, шутки-шутками а может кто-нибудь из участников форума поразит своим знанием теории синтаксического разбора на основе порождающей грамматики применительно к данному случаю, имея в виду правоассоциативную степень? Или самому медленно и печально читать Ахо-Ульманов?
Добавлено через 2 минуты
0
|
IGPIGP
|
05.10.2014, 19:07
#78
|
Не по теме: Темновато уже, а свет включать каждый раз как к этой машине подхожу влом. Не, не на скале живу. К сожалению. И бываю там нечасто. Тоже к сожалению. Это прошлогоднее фото. В Николаевской области, в 3-4 км от города Южно-Украинск (городок ЮУ-АЭС) ниже по р. Ю.Буг есть такое место.:)
0
|
zss
|
||||||
05.10.2014, 19:11
Калькулятор с парсингом ввода
#79
|
||||||
1
|
05.10.2014, 19:11 | |
Помогите с парсингом С++!!! Как преобразовать обычный калькулятор в калькулятор использующий класс стек? Калькулятор в строке ввода Калькулятор: контроль ввода данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |