1 / 1 / 1
Регистрация: 04.02.2011
Сообщений: 30
|
||||||
1 | ||||||
Как работает калькулятор?23.05.2011, 20:42. Показов 4416. Ответов 21
Метки нет (Все метки)
Помогите подробней код разобрать и прокомментировать назначение переменных, функций...
0
|
23.05.2011, 20:42 | |
Ответы с готовыми решениями:
21
Как работает калькулятор? Простой калькулятор: Не работает код, как это исправить? Как преобразовать обычный калькулятор в калькулятор использующий класс стек? Не работает калькулятор |
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
|
|
23.05.2011, 20:46 | 2 |
а что конкретно непонятно?
0
|
1 / 1 / 1
Регистрация: 04.02.2011
Сообщений: 30
|
|
23.05.2011, 21:01 [ТС] | 3 |
Больше всего интересует, как здесь происходит работа со скобками.
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
24.05.2011, 00:45 | 4 |
Логика работы подчиняется такой формальной грамматике
Код
// <цифра> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' // <число> ::= <цифра> { <цифра> } [ '.' <цифра> { <цифра> } ] // // <выражение> ::= <слагаемое> [ ( '+' | '-' ) <слагаемое> ] // <слагаемое> ::= <множитель> [ ( '*' | '/' ) <множитель> ] // <множитель> ::= ( <число> | '(' <выражение> ')' ) [ '^' <множитель> ]
1
|
14 / 14 / 1
Регистрация: 03.09.2009
Сообщений: 109
|
||||||
24.05.2011, 06:46 | 5 | |||||
Советую поискать про Обратную Польскую Запись.
С ее помощью можно наиболее эффективно разбирать даже сложные скобочные выражения. Не так давно сам попробовал реализовать что-то вроде калькулятора на c99. Возможно, пригодится мой код. Он довольно подробно прокомментирован.
1
|
49 / 49 / 4
Регистрация: 31.01.2011
Сообщений: 156
|
|
24.05.2011, 08:30 | 6 |
По всей видимости, в листинге для решения задачи реализован нисходящий разбор.
Интересная штука кстати
0
|
14 / 14 / 1
Регистрация: 03.09.2009
Сообщений: 109
|
|
24.05.2011, 09:39 | 7 |
Алгоритм аналогичен алгоритму для перевода в Обратную польскую запись
Просто не выводит в строку, а сразу реализует вычисления без вывода в строку.
0
|
1 / 1 / 1
Регистрация: 04.02.2011
Сообщений: 30
|
||||||
24.05.2011, 14:27 [ТС] | 8 | |||||
А как "расшифровать" например строку
Это что-то из области ООП?
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
24.05.2011, 14:46 | 10 |
0
|
1 / 1 / 1
Регистрация: 04.02.2011
Сообщений: 30
|
|
24.05.2011, 14:47 [ТС] | 11 |
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
24.05.2011, 14:49 | 12 |
ЛазаретЪ, кто сказал, что без классов? Да, программа написана в процедурном стиле, однако в ней используются стандартные объекты стандартных библиотечных классов (тот же std::cin - объект класса istrem).
1
|
1 / 1 / 1
Регистрация: 04.02.2011
Сообщений: 30
|
|
24.05.2011, 14:51 [ТС] | 13 |
Т.е. классы уже прописаны в стандартной библиотеке?
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
24.05.2011, 14:54 | 14 |
ЛазаретЪ, разумеется, иначе какое удовольствие в использовании голого языка? Думаю, в любом более-менее приличном языке есть стандартная библиотека с реализациями часто используемого инструментария. Не будь её, вы бы даже на экран ничего вывести не смогли без использования низкоуровневых системных API.
1
|
1 / 1 / 1
Регистрация: 04.02.2011
Сообщений: 30
|
|
24.05.2011, 15:09 [ТС] | 15 |
Спасибо, буду дальше разбираться и задавать вопросы, если что.
0
|
1 / 1 / 1
Регистрация: 04.02.2011
Сообщений: 30
|
|
25.05.2011, 19:31 [ТС] | 16 |
А в каком случае программа выдаст сообщение "Неверная расстановка скобок!" ? По разному перепробовал скобки ставить, а ошибка не вылазит..
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
25.05.2011, 19:42 | 17 |
На обработку этой ошибки особый упор не делался, в данном случае обрабатывается вариант, когда открывающей скобке не соответствует закрывающая.
1
|
1 / 1 / 1
Регистрация: 04.02.2011
Сообщений: 30
|
||||||
26.05.2011, 20:29 [ТС] | 18 | |||||
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
26.05.2011, 20:35 | 19 |
Например, для std::setprecision.
0
|
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
|
|
26.05.2011, 20:39 | 20 |
В этом файле определены некоторые манипуляторы потокового ввода/вывода.
например: std::setprecision std::setw std::setbase и т. д.
0
|
26.05.2011, 20:39 | |
26.05.2011, 20:39 | |
Помогаю со студенческими работами здесь
20
Не работает калькулятор Почему так странно работает калькулятор Неправильно работает небольшая программа-калькулятор Как это работает? Я хочу спросить как работает C++ и где можно про него почитать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |