|
0 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 98
|
|
Калькулятор с парсингом ввода04.10.2014, 13:05. Показов 18031. Ответов 78
Метки нет (Все метки)
Всем привет, не так давно начал постигать c++. Возник вопрос как сделать программу-калькулятор, в которую можно вводить свои числа и арифметические операции.
Пример: Выскакивает консолька и пользователь вводит "17 + 19 * 6 - 8", то есть пользователь не ограничен в действиях.
0
|
|
| 04.10.2014, 13:05 | |
|
Ответы с готовыми решениями:
78
Простой калькулятор и калькулятор с парсингом
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||
| 05.10.2014, 10:00 | ||||
|
Добавлено через 3 минуты Добавлено через 2 минуты
0
|
||||
|
Комп_Оратор)
|
||
| 05.10.2014, 12:38 | ||
|
Мне интересно как ответить TC... Ведь если окажется, что и он писал подобное на других языках, то в чём вопрос? А если нет, то наверное не стоит ставить такую задачу на старте.(имхо) Не по теме: А то
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||||||||||||||||
| 05.10.2014, 13:06 | ||||||||||||||||||||||
0
|
||||||||||||||||||||||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||
| 05.10.2014, 13:47 | |||||||||||
|
Не даже, а именно. Рекурсия бывает и неуместна.
0
|
|||||||||||
|
Комп_Оратор)
|
||
| 05.10.2014, 14:35 | ||
![]() Даже видов траверсов деревьев их вон аж целых несколько. Но всё же от цели обхода зависит и от логики выбора следующей рекурсивной ветви. Если дерево не двоичное, а многая-многая-ичное и логика выбора не одно сравнение, а цель - все имеющиеся узлы? Делаем, например, список аналогичный списку подвыражений, - добавляем туда корень и в цикле обходим по узлам одного уровня, купируя на листьях. 5-6 строчек. Вообще, тема ушла куда-то от калькуляторов. Так часто бывает. Просит человек строку на гласные и согласные раскидать... И по вопросу и по включаемым файлам видно, что нужно руками сделать и чтобы он понял, а появляются ответы на 2 строчки в которых половина STL. А я думаю, если человек просит STL то тогда уже, как говорили древние вавилоняне: - "Итератор в руки, бэкинсёртер - в спину, и вперёд!" А иначе зачем?
1
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||
| 05.10.2014, 14:55 | |||||||
0
|
|||||||
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
||||
| 05.10.2014, 15:07 | ||||
|
1
|
||||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 05.10.2014, 15:15 | |||
|
Прежде чем писать рекурсию, надо определить, есть ли вообще удовлетворительные не рекурсивные решения. Если есть, то рекурсия может быть уместна лишь на рекурсивных данных и только если помимо этого задача может быть разложена на подзадачи, не имеющие удовлетворительных не рекурсивных решений.
Добавлено через 6 минут Добавлено через 1 минуту
0
|
|||
| 05.10.2014, 15:49 | |
|
Охохох... Вроде все слова уже сказаны, и всем должно быть все понятно (даже включая ТС), а нет же... Алгоритмов предложено уже несколько штук, рекурсивные/нерекурсивные, со стеком/без стека, все рабочие. Вот - Разбор и вычисление бинарных инфиксных операций написал (ночью, когда резвились
) коряво простейший НЕрекурсивный БЕЗстековый алгоритм, НЕ ОПН, НЕ станция Дейкстры - тупо редукция в цикле! И неважно, что использованы рекурсивные функции (там просто циклов нет в языке) - главное сам алгоритм простой, тупой как палка-веревка, и нерекурсивный и без стека! Как завещал castorsky - простая пробежка по строке один раз в цикле. Правда, только для бинарных инфиксных операций.Добавлено через 4 минуты Не по теме: IGPIGP,
2
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 05.10.2014, 15:59 | |
|
Ну с этим то ограничением у меня есть транслятор инфиксных в постфиксные, причём, не таким категоричным. Но там даже унарный минус транслируется так: сначала перед минусом подставляется ноль, причём, неявно, а потом уже транслируется выражение. Если исключить или функции, или унарные операции, а функции ограничить только одним аргументом, то он ещё справляется. Если всё в куче, то уже не всегда.
0
|
|
| 05.10.2014, 16:02 | |
|
0
|
|
| 05.10.2014, 16:08 | ||
|
Да у всех тут есть транслятор для данной задачи, и не один
Скажите лучше, ваши трансляторы прожуют такое:
И не верю, что это некорректное выражение в синтаксисе данной грамматики. Кстати, вместо баловства хотелось бы теорию синтаксического разбора действительно понять на этой задачке.
0
|
||
| 05.10.2014, 16:15 | |
|
0
|
|
| 05.10.2014, 16:23 | |
|
IGPIGP, кстати, сейчас я без труда понял что вы имели в виду, когда писали, что распарсим один раз и отобразим на массив входных данных, а последовательность операций уже будет "зашита" в каком-то контейнере. Ночью просто новую информацию тяжело воспринимать
Кстати, на том же Haskell, где функции такие же объекты первого класса как и константы, и их можно передавать как значения, хранить "пакет вычислений" еще проще - можно хранить его напрямую.
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 05.10.2014, 16:24 | ||
|
1
|
||
| 05.10.2014, 16:28 | ||
|
Не по теме:
Добавлено через 3 минуты taras atavin, я понимаю ваше праведное возмущение, однако это зависит от трактовки выражений. И если есть вариант его однозначной трактовки (а в данном случае он очень даже есть), то его можно редуцировать и вычислить, что почти все мои алгоритмы подобных разборов и делают А можно кричать "ах, ошибка!" и вываливаться из разбора. Привел просто для примера.
1
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 05.10.2014, 16:29 | |
|
И как же его считать?
0
|
|
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
| 05.10.2014, 16:34 | |
|
0
|
|
| 05.10.2014, 16:34 | |
|
Корень и дробная часть. Калькулятор с парсингом Помогите с парсингом С++!!! Как преобразовать обычный калькулятор в калькулятор использующий класс стек? Калькулятор в строке ввода
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|