0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 21
|
|
1 | |
Калькулятор19.11.2013, 21:11. Просмотров 662. Ответов 2
Метки нет Все метки)
(
Здравствуйте! Задача такая: написать калькулятор, но не простой, а читающий пример из файла. Узнал, что надо привести пример в другую форму. Например, был такой: "(9+7)/2", а стал такой: "97+2/". Вроде бы так
![]()
0
|
|
19.11.2013, 21:11 | |
Как преобразовать обычный калькулятор в калькулятор использующий класс стек? Простой калькулятор и калькулятор с парсингом Калькулятор Калькулятор |
|
4197 / 1790 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
|
|
19.11.2013, 21:23 | 2 |
вот как раз 97+2/ не пойдёт, так как цифры не разделены. Хорошо, если имелось ввиду (9+7)/2. А если (93+47)/26? Ты из этого слепишь 9347+26/. А что это значит? (9+347)/26? Или (934+7)/26? А может (93+47)/26? А значения то разные! Уж хотябы
9 7 + 2 /, но ни как не в строчку. Или 9 7+2/. Числа разделяются пробелами, а цифры числа нет. А можно и прямо с инфиксной формы, то есть (9+7)/2. И даже +9 7/2, или + 9 7 / 2. Какую бы форму выражения ты ни выбрал, нужен парсер. А можно ещё так: 9+7 /2, где знак операции в начале строки означает, что левый операнд - результат предыдущего выражения, какими бы ни были приоритеты его операций. Добавлено через 3 минуты Инфиксные выражения со скобками и приоритетами парсятся сложней всего, если каждое отдельное выражение содержит ровно одну операцию ( 9+7 /2 ), то сложность парсинга ни как не отличается от сложности реакции на ввод в обычном калькуляторе. Для суффиксных и постфиксных выражений нужен стек, то есть сам расчёт усложняется, но парсинг максимально прост. Добавлено через 1 минуту Для начала надо определиться с формой выражения, так как все формы парсятся по разным алгоритмам. Если инфиксное со скобками и приоритетами, то надо парсить или деревом, рекурсивно, или переобразовывать в суффиксную/постфиксную форму при первичном парсинге, а потом гонять ещё и вторичный парсинг.
1
|
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 21
|
|
19.11.2013, 21:28 [ТС] | 3 |
Тогда еще несколько вопросов) Что тут подразумевает слово "парсинг"?) Ну и почему бы не принять первую форму выражения? Числа двузначные можно же разделить пробелом, как и все другие символы, и потом считывать до окончания строки, так?) А потом, со стеком поработав, загнать преобразованное в массив...
0
|
19.11.2013, 21:28 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Калькулятор Калькулятор в С++
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |