|
0 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 98
|
|
Калькулятор с парсингом ввода04.10.2014, 13:05. Показов 18275. Ответов 78
Метки нет (Все метки)
Всем привет, не так давно начал постигать c++. Возник вопрос как сделать программу-калькулятор, в которую можно вводить свои числа и арифметические операции.
Пример: Выскакивает консолька и пользователь вводит "17 + 19 * 6 - 8", то есть пользователь не ограничен в действиях.
0
|
|
| 04.10.2014, 13:05 | |
|
Ответы с готовыми решениями:
78
Простой калькулятор и калькулятор с парсингом
|
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||
| 05.10.2014, 10:00 | ||||
|
Добавлено через 3 минуты Добавлено через 2 минуты
0
|
||||
|
Комп_Оратор)
|
||
| 05.10.2014, 12:38 | ||
|
Мне интересно как ответить TC... Ведь если окажется, что и он писал подобное на других языках, то в чём вопрос? А если нет, то наверное не стоит ставить такую задачу на старте.(имхо) Не по теме: А то
0
|
||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||||||||||||||||
| 05.10.2014, 13:06 | ||||||||||||||||||||||
0
|
||||||||||||||||||||||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||
| 05.10.2014, 13:47 | |||||||||||
|
Не даже, а именно. Рекурсия бывает и неуместна.
0
|
|||||||||||
|
Комп_Оратор)
|
||
| 05.10.2014, 14:35 | ||
![]() Даже видов траверсов деревьев их вон аж целых несколько. Но всё же от цели обхода зависит и от логики выбора следующей рекурсивной ветви. Если дерево не двоичное, а многая-многая-ичное и логика выбора не одно сравнение, а цель - все имеющиеся узлы? Делаем, например, список аналогичный списку подвыражений, - добавляем туда корень и в цикле обходим по узлам одного уровня, купируя на листьях. 5-6 строчек. Вообще, тема ушла куда-то от калькуляторов. Так часто бывает. Просит человек строку на гласные и согласные раскидать... И по вопросу и по включаемым файлам видно, что нужно руками сделать и чтобы он понял, а появляются ответы на 2 строчки в которых половина STL. А я думаю, если человек просит STL то тогда уже, как говорили древние вавилоняне: - "Итератор в руки, бэкинсёртер - в спину, и вперёд!" А иначе зачем?
1
|
||
|
4226 / 1799 / 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 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 05.10.2014, 15:15 | |||
|
Прежде чем писать рекурсию, надо определить, есть ли вообще удовлетворительные не рекурсивные решения. Если есть, то рекурсия может быть уместна лишь на рекурсивных данных и только если помимо этого задача может быть разложена на подзадачи, не имеющие удовлетворительных не рекурсивных решений.
Добавлено через 6 минут Добавлено через 1 минуту
0
|
|||
| 05.10.2014, 15:49 | |
|
Охохох... Вроде все слова уже сказаны, и всем должно быть все понятно (даже включая ТС), а нет же... Алгоритмов предложено уже несколько штук, рекурсивные/нерекурсивные, со стеком/без стека, все рабочие. Вот - Разбор и вычисление бинарных инфиксных операций написал (ночью, когда резвились
) коряво простейший НЕрекурсивный БЕЗстековый алгоритм, НЕ ОПН, НЕ станция Дейкстры - тупо редукция в цикле! И неважно, что использованы рекурсивные функции (там просто циклов нет в языке) - главное сам алгоритм простой, тупой как палка-веревка, и нерекурсивный и без стека! Как завещал castorsky - простая пробежка по строке один раз в цикле. Правда, только для бинарных инфиксных операций.Добавлено через 4 минуты Не по теме: IGPIGP,
2
|
|
|
4226 / 1799 / 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 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 05.10.2014, 16:24 | ||
|
1
|
||
| 05.10.2014, 16:28 | ||
|
Не по теме:
Добавлено через 3 минуты taras atavin, я понимаю ваше праведное возмущение, однако это зависит от трактовки выражений. И если есть вариант его однозначной трактовки (а в данном случае он очень даже есть), то его можно редуцировать и вычислить, что почти все мои алгоритмы подобных разборов и делают А можно кричать "ах, ошибка!" и вываливаться из разбора. Привел просто для примера.
1
|
||
|
4226 / 1799 / 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 | |
|
Корень и дробная часть. Калькулятор с парсингом Помогите с парсингом С++!!! Как преобразовать обычный калькулятор в калькулятор использующий класс стек? Калькулятор в строке ввода
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|