Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/89: Рейтинг темы: голосов - 89, средняя оценка - 4.53
 Аватар для perec200
0 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 98

Калькулятор с парсингом ввода

04.10.2014, 13:05. Показов 18016. Ответов 78
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, не так давно начал постигать c++. Возник вопрос как сделать программу-калькулятор, в которую можно вводить свои числа и арифметические операции.
Пример:
Выскакивает консолька и пользователь вводит "17 + 19 * 6 - 8", то есть пользователь не ограничен в действиях.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2014, 13:05
Ответы с готовыми решениями:

Простой калькулятор и калькулятор с парсингом
Ребят я совсем не давно только начал изучать сишку, решил написать простенький калькулятор который работает с 2 числами. Возник вопрос, как...

Калькулятор с парсингом строки
Добрый день, дорогие программисты помогите написать калькулятор. Я ввожу строку например 5+8/7*10 и он должен посчитать. Нужно числа...

Калькулятор с парсингом арифметических выражений
Народ интересует вопрос возможно ли сделать калькулятор в console приложении на C++ так что бы я ввожу строку например 3+4*2 он берет всю...

78
05.10.2014, 16:37
Студворк — интернет-сервис помощи студентам

Не по теме:

как неудобно, что на этом форуме в цитату не вставляется ссылка на цитируемое место!... И где мне теперь искать контекст фразы, откуда можно будет понять, что имел ввиду автор под "такими решениями"? Придется бегать по всей теме, и то хорошо если это в текущей теме.

0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
05.10.2014, 16:42
Ващето вставлсяется. И "такие решения" относятся не к цитате, а к тому посту, где написана сама фраза.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.10.2014, 16:50
Цитата Сообщение от taras atavin Посмотреть сообщение
25 * ( 25.1234 + 3 )/5 ((((()))))- ((((((((7 -)) 2))*3
Цитата Сообщение от taras atavin Посмотреть сообщение
Разве допускается пустое подвыражение? Разве минус бывает постфиксным?
Вот тут опять согласен с taras atavin.
Скобки выделяют приоритет выражения, но выражением не являются, так же как не является выражением и постфиксный минус. По крайней мере до тех пор, пока не будет сказано что-то вроде: -"Я придумал новую запись математических выражений и она выгодна тем-то и тем-то...". Но и тут я, скорее-всего буду в числе скептиков. Простая математическая нотация ведь вещь очень консервативная. Даже изменение простого и нечасто применимого правила правописания, принятое поспешно, может повлечь совершенно неожиданные и вряд ли приятные последствия. Всё на свете начиная от правил эксплуатации и проектирования до уставов и кодексов, нужно пересматривать..., а потом переучивать всех... Это должно быть доказано, как совершенно необходимое.
зы: У меня на такое ругается и говорит где и почему ка-ка, ещё задолго до разбора.

Добавлено через 6 минут
Цитата Сообщение от _Ivana Посмотреть сообщение
как неудобно, что на этом форуме в цитату не вставляется ссылка на цитируемое место!... И где мне теперь искать контекст фразы, откуда можно будет понять, что имел ввиду автор под "такими решениями"? Придется бегать по всей теме, и то хорошо если это в текущей теме.
Интересное предложение.
Попробуйте сюда его.
https://www.cyberforum.ru/abou... 44611.html
Серьезно, на этот раз. Там как раз может понравиться.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
05.10.2014, 17:25
IGPIGP, хорошо, давайте подискутируем Что скажете о таких выражениях:
(4)+2
((1+2))+3
() 1+2 )(
Имхо, это исключительно вопросы трактовки синтаксиса.

Добавлено через 6 минут
1 ((+)) 2
1 ((+) 2
1 (+)) 2
1 ((+) 2)
Три буквы - иначе пост не отправляется

Добавлено через 26 минут

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Ващето вставлсяется.
Нашел кнопочку. С первого раза не догадаться, весьма не юзер-френдли интерфейс...

0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.10.2014, 17:36
Не скажу ничего экстраординарного:
Цитата Сообщение от _Ivana Посмотреть сообщение
(4)+2
((1+2))+3
Вполне законны и должны парситься.
Цитата Сообщение от _Ivana Посмотреть сообщение
() 1+2 )(
Не должно паситься. Если Вы не установите новых правил и не объясните юзеру как этим пользоваться и зачем ему это нужно. О проблемах этого пути я уже высказался.
Цитата Сообщение от _Ivana Посмотреть сообщение
1 ((+)) 2
1 ((+) 2
1 (+)) 2
1 ((+) 2)
Тоже не должно быть.
В этой теме, есть ещё весёлые места. Как то, - приоритет и ассоциативность. Причем в нескольких аспектах. Самый для меня интересный, - не ассоциативность компьютерных вычислений с точки зрения сохранения значимости. В арифметических выражениях, это можно проиллюстрировать:
10^20 + 1 - 10^20
большинство современных систем выдаст 0 вместо 1.
Как с этим бороться в пределах одного уровня вложенности, понятно. А вот для разных - шутки с гирямиспекуляции получаются. Вроде разложения чисел с плавающей точкой на слагаемые, множители, степени...
Там тоже просматриваются возможности, но сложность сильно возрастает. В части оценки потери значимости, в основном. С удовольствием бы почитал, что-то из серии: "Компьютерные вычисления для садоводов".
И из анекдотов. Существует классическая левая ассоциативность для операции возведения в степень. То есть:
3^2^3 = (3^2)^3
и экселевская (молодцы майкро-проггеры, - а чего париться!) :
3^2^3 = 3^(2^3)
С возведением в степень, вообще много интересного ещё. (имхо)
Но любой сложный по природе предмет если не ограничиться поставленным вопросом (в разумных пределах ограничиться, конечно) может стать вечной темой.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
05.10.2014, 17:50
Хорошо, когда кто-нибудь создает такую с виду безобидную тему, но в которой есть куда развернуться Сколько всего интересного узнаёшь.
А насчет степеней я был не в курсе Экселевской трактовки. Джоэл Спольски молодец (кроме шуток). Но по моему имху как раз правая ассоциативность степени более логична, хотя левую гораздо проще реализовать в большинстве парсеров.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
05.10.2014, 17:52
Цитата Сообщение от IGPIGP Посмотреть сообщение
10^20 + 1 - 10^20
Ну и где здесь ассоциативность? Степень имеет высший приоритет, ((10^20)+1)-(10^20)=1, (10^20)+(1-(10^20))=1. Ассоциативность важна в том случае, когда операнды вычисляются/исполняются и при их вычислении/исполнении происходят побочные эффекты, а здесь как ни ассоциируй, ничего не поменяется.
0
05.10.2014, 17:53

Не по теме:

taras atavin, вы бы что-ли тон сменили с менторского на противоположный... Ведь садитесь в лужу в 70% ваших постов!

0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
05.10.2014, 17:55
Цитата Сообщение от IGPIGP Посмотреть сообщение
Существует классическая левая ассоциативность для операции возведения в степень. То есть:
3^2^3 = (3^2)^3
А вот здесь она как раз важна. В левой ассоциативности здесь 729, а в правой 7 625 597 484 987.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.10.2014, 18:19
Цитата Сообщение от taras atavin Посмотреть сообщение
10^20 + 1 - 10^20
Возьмите встроенный калькулятор от Майкрософт (хорошая вещь, кстати) и проверьте. При вычислении определителей объём вычислений сильно зависит от размера матрицы, к слову, и там ошибка потери значимости может здорово сказываться.

Добавлено через 5 минут
Цитата Сообщение от _Ivana Посмотреть сообщение
Но по моему имху как раз правая ассоциативность степени более логична
Математические операции равного приоритета, выполняются справа-на-лево. По крайней мере там, где пишут и читают справа-на-лево. Это просто соглашение, конечно, но не придерживаться грешно же?
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
05.10.2014, 18:30
Цитата Сообщение от IGPIGP Посмотреть сообщение
Математические операции равного приоритета, выполняются справа-на-лево.
Данунафиг! Я всю жизнь вычитал и делил слева-направо
Цитата Сообщение от IGPIGP Посмотреть сообщение
По крайней мере там, где пишут и читают справа-на-лево.
Арабские страны, Израиль и Китай предлагаю не рассматривать - мы на русскоязычном форуме
Цитата Сообщение от IGPIGP Посмотреть сообщение
Это просто соглашение, конечно, но не придерживаться грешно же?
В случае степени левую ассоциативность предполагать нелогично, ибо x^y^z в развороте математической нотации - иерархическая тройка (в латексе набрал бы, но долго разбираться), и внешние (правые) возведения выполняются первыми.

Добавлено через 6 минут
x^y^z = https://www.cyberforum.ru/cgi-bin/latex.cgi?x^{y^z} , заодно в местном латексе поупражняюсь.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.10.2014, 18:35
Цитата Сообщение от _Ivana Посмотреть сообщение
Данунафиг! Я всю жизнь вычитал и делил слева-направо
Дык, я тоже...
Для степени вопрос не бесспорный, но надо сказать, что я всё перепутал:
Цитата Сообщение от viki
В компьютерных системах и языках программирования в случае нескольких степеней подряд «многоэтажная» запись степени и запись её с помощью значка степени (значков потребуется несколько) имеют разную ассоциативность: в записи a^b^c^d^f (с помощью значка степени) в различных системах может быть как левая, так и правая ассоциативность; например, программа Excel обрабатывает запись слева направо: ((((a^b)^c)^d)^f), некоторые другие системы и языки обработают запись справа налево
https://ru.wikipedia.org/wiki/... 0%BD%D1%8C
Я же говорю, - бывает напишешь, - самому интересно читать.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
05.10.2014, 18:40
Значит Спольски халтурщик А мы с Вами выяснили, что разногласий у нас и не было, как только согласовали наши "лево" и "право"
1
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
167 / 167 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
05.10.2014, 18:42
Используйте Обратную польскую нотацию и не знайте проблем
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
05.10.2014, 18:45
Цитата Сообщение от IGPIGP Посмотреть сообщение
Математические операции равного приоритета, выполняются справа-на-лево. По крайней мере там, где пишут и читают справа-на-лево. Это просто соглашение, конечно, но не придерживаться грешно же?
Вот только как раз в Израиле даже физику преподают на английском.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.10.2014, 18:50
Цитата Сообщение от taras atavin Посмотреть сообщение
Вот только как раз в Израиле даже физику преподают на английском.
Та я ж сказал уже:
Цитата Сообщение от IGPIGP Посмотреть сообщение
Математические операции равного приоритета, выполняются справа-на-лево. По крайней мере там, где пишут и читают справа-на-лево.
В обоих предложениях одинаково же должно было быть. Только слева-направо!
Я печатаю сейчас слева-напра..., - да, - направо. И вчера так было...
И про степни тоже наоборот всё. Трудно печатать в темноте, да ещё урывками. Или Вы поверили, что я таки справо налево арифметику считаю?
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
05.10.2014, 18:55
Однако, шутки-шутками а может кто-нибудь из участников форума поразит своим знанием теории синтаксического разбора на основе порождающей грамматики применительно к данному случаю, имея в виду правоассоциативную степень? Или самому медленно и печально читать Ахо-Ульманов?

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
Трудно печатать в темноте, да ещё урывками.
Стесняюсь спросить, откуда вы с нами общаетесь :) Тем более, ваш аватар дает пищу для фантазии :)

0
05.10.2014, 19:07

Не по теме:

Цитата Сообщение от _Ivana Посмотреть сообщение
Стесняюсь спросить, откуда вы с нами общаетесь
Темновато уже, а свет включать каждый раз как к этой машине подхожу влом.
Цитата Сообщение от _Ivana Посмотреть сообщение
Тем более, ваш аватар дает пищу для фантазии
Не, не на скале живу. К сожалению. И бываю там нечасто. Тоже к сожалению. Это прошлогоднее фото. В Николаевской области, в 3-4 км от города Южно-Украинск (городок ЮУ-АЭС) ниже по р. Ю.Буг есть такое место.:)

0
05.10.2014, 19:11
 Комментарий модератора 
Господа. Мы находимся в разделе С++ для НАЧИНАЮЩИХ.
И подобные дискуссии тут неуместны.
А посему - тему закрываю!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.10.2014, 19:11

Корень и дробная часть. Калькулятор с парсингом
Прошу вас помочь мне. Ибо все мои пробы не к чему не приводят. Я пишу консольный калькулятор. Сначала я записываю выражение в char,...

Помогите с парсингом С++!!!
Народ помогите с парсингом я в этом деле жесткий нуб скиньте ссылки на книжки какие-нибудь где есть что то на эту тему буду благодарен!!!

Как преобразовать обычный калькулятор в калькулятор использующий класс стек?
#include <iostream> int main(){ int a = 0; int b = 0; char operation; std::cout << "Enter first number: "; ...

Калькулятор в строке ввода
короче говоря нужен калькулятор в строке ввода а то есть без конопочек=)

Калькулятор: контроль ввода данных
Делаю калькулятор формат Form1.vb нужна помощь . Как сделать чтоб с клавиатуры нельзя было вводить текст , а только цифры.!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
79
Закрытая тема Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru