0 / 0 / 0
Регистрация: 11.02.2017
Сообщений: 16
|
||||||
1 | ||||||
Stack калькулятор20.02.2018, 10:47. Показов 3703. Ответов 11
Метки нет (Все метки)
Здравствуйте!
Пишу программу, по заданию "Нужно написать интерпретатор который исполняет программу стэкового для калькулятора, например такую: PUSH 6 PUSH 5 PUSH 4 ADD в данной программе мы кладем в стэк 6, потом 5, потом сверху кладем 4. В результате там оказываются 3 числа 6,5,4. На верху стэка 4, т.к. его положили последним. Стэк можно себе представить в виде глубокой коробки, стоящей на полу. Вы можете класть только на самый верх этой коробки и брать элементы только с самого верха. Стэк уже реализован в классе Stack<Double> в java. В результате выполнения ADD программа должна вытащить (stack.push()) два самых верхних значения из стэка и положить в замен них сумму 9. PRINT выдает значение стэка на экран (System.out.println(stack.toString()), в данном случае два числа: 6 и 9. Реализовать помимо этих следующие комманды: POP -- вытащить самое верхнее число и написать его в консоль MUL, DIV, SUB -- умножение, деление, сложение DEFINE a 5 -- определяет константу a, равную 5, которая будет храниться в Map<String,Double> в калькуляторе. Далее константы можно использовать в операторе PUSH. Калькулятор написать в первом приближении без многих классов с одной функцией main, внутри которой бесконечный цикл, читающий с консоли. Каждая строка, прочитанная с консоли, разделяется по пробелу с помощью String.split(“ ”). Нулевой элемент полученного массива -- имя комманды, первый (если есть) -- её аргумент. Далее делается перебор возможных комманд в блоках if-else и для каждой комманды исполняется свой код."
0
|
20.02.2018, 10:47 | |
Ответы с готовыми решениями:
11
Stack search() Stack на практике Obsolete Methods on the stack Память Heap и Stack |
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
20.02.2018, 11:03 | 2 |
чо за второй стэк?
работы с константами нет, мэп вообще не используется Вот эта вот простыня из if else это не очень, мягко говоря. Добавлено через 1 минуту ну и никак не проверяется ввод
0
|
Am I evil? Yes, I am!
17557 / 10311 / 2819
Регистрация: 21.10.2017
Сообщений: 22,367
|
|
20.02.2018, 19:35 | 3 |
Cold As Ice, присоединяюсь к предыдущему оратору. switch вместо ифов сам напрашивается.
Почему именно double? Любые объекты можно юзать... Push - это "втащить"
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
20.02.2018, 20:55 | 4 |
0
|
Am I evil? Yes, I am!
17557 / 10311 / 2819
Регистрация: 21.10.2017
Сообщений: 22,367
|
|
20.02.2018, 21:05 | 5 |
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
20.02.2018, 21:22 | 6 |
1
|
Am I evil? Yes, I am!
17557 / 10311 / 2819
Регистрация: 21.10.2017
Сообщений: 22,367
|
|
20.02.2018, 21:23 | 7 |
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
20.02.2018, 21:44 | 8 |
0
|
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,587
|
||||||
20.02.2018, 22:49 | 9 | |||||
Наверное, потому что это калькулятор?..
Ну, там, к слову говоря, упоминается, какие есть преимущества у функционального подхода. В данном случае, думаю, свитч вполне можно использовать, т.к. диспетчеризацию в любом случае придётся как-то делать и свич в данном случае позволит оставить код лаконичным, понятным и вполне сопровождаемым. А городить какой-то механизм диспетчеризации, который будет автоматически матчить операции на их реализации и подключать реализации автоматически, по-моему так себе затея. Конечно, тупо машинально переписывать эти if-else-if-… на свич тоже не нужно, а нужно разнести операции по методам и сделать отдельный метод выбора операции, упрощённо, типа такого:
Про ООП-шный over-engineering, например… =)
1
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
20.02.2018, 23:23 | 10 |
0
|
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,587
|
|
21.02.2018, 00:09 | 11 |
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
21.02.2018, 06:15 | 12 |
все. Тесты как на это писать, например?
0
|
21.02.2018, 06:15 | |
21.02.2018, 06:15 | |
Помогаю со студенческими работами здесь
12
Stack Java на массивах Калькулятор комплексных чисел на С++ с использованием Stack [bcc32 Error] File1.cpp(19): E2316 'Stack<T>::Stack()' is not a member of 'Stack<T>' Есть ли связь между STL-stack и stack - высокопроизводительная память? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |