0 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 98
1

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

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

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

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

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

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

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

78
_Ivana
05.10.2014, 16:37     Калькулятор с парсингом ввода
  #61

Не по теме:

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

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

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

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

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

Не по теме:

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

0
Комп_Оратор)
Эксперт по математике/физике
8945 / 4699 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
05.10.2014, 17:36 65
Не скажу ничего экстраординарного:
Цитата Сообщение от _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
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
05.10.2014, 17:50 66
Хорошо, когда кто-нибудь создает такую с виду безобидную тему, но в которой есть куда развернуться Сколько всего интересного узнаёшь.
А насчет степеней я был не в курсе Экселевской трактовки. Джоэл Спольски молодец (кроме шуток). Но по моему имху как раз правая ассоциативность степени более логична, хотя левую гораздо проще реализовать в большинстве парсеров.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
05.10.2014, 17:52 67
Цитата Сообщение от IGPIGP Посмотреть сообщение
10^20 + 1 - 10^20
Ну и где здесь ассоциативность? Степень имеет высший приоритет, ((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
Цитата Сообщение от IGPIGP Посмотреть сообщение
Существует классическая левая ассоциативность для операции возведения в степень. То есть:
3^2^3 = (3^2)^3
А вот здесь она как раз важна. В левой ассоциативности здесь 729, а в правой 7 625 597 484 987.
0
Комп_Оратор)
Эксперт по математике/физике
8945 / 4699 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
05.10.2014, 18:19 70
Цитата Сообщение от taras atavin Посмотреть сообщение
10^20 + 1 - 10^20
Возьмите встроенный калькулятор от Майкрософт (хорошая вещь, кстати) и проверьте. При вычислении определителей объём вычислений сильно зависит от размера матрицы, к слову, и там ошибка потери значимости может здорово сказываться.

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

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

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

Не по теме:

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

0
IGPIGP
05.10.2014, 19:07
  #78

Не по теме:

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

0
zss
05.10.2014, 19:11     Калькулятор с парсингом ввода
  #79
 Комментарий модератора 
Господа. Мы находимся в разделе С++ для НАЧИНАЮЩИХ.
И подобные дискуссии тут неуместны.
А посему - тему закрываю!
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2014, 19:11

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
79
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru