Форум программистов, компьютерный форум, киберфорум C/C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 22.11.2023
Сообщений: 14
1

Обратная польская нотация

24.11.2023, 20:31. Показов 2501. Ответов 2

Author24 — интернет-сервис помощи студентам
Обратной польской нотацией называется принцип записи арифметического выражения, указывающий на порядок выполнения арифметических операций.
По правилам обратной польской нотации сначала записываются два числа, над которыми будет выполнена операция, а затем сама операция.
Пример: 1 2 + 3 4 + *
Сначала выполняется сложение чисел 1 и 2, затем сложение чисел 3 и 4, а потом берется произведение полученных результатов, то есть данное выражение можно записать как (1 + 2) * (3 + 4).

Формат ввода:
Строка с выражением в обратной польской нотации (все числа целые положительные).

Формат вывода:
Результат выражения.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2023, 20:31
Ответы с готовыми решениями:

Обратная польская нотация
Нужна помощь, чтобы проверить код обратной польской нотации (постфиксная запись), не уверен в...

Обратная польская нотация
Как имея вид выражения в записи обратной польской нотации правильно расставить скобки?

Обратная Польская Нотация
Пытался реализовать ОПН....ничего не вышло,обращаюсь за помощью: в чем ошибка(и)? #include...

Обратная польская нотация (калькулятор)
Форумчане, хелп ми плиз, создал калькулятор на основе ОПН, однако он работает только для...

2
4863 / 2662 / 913
Регистрация: 29.11.2010
Сообщений: 5,743
27.11.2023, 06:52 2
Лучший ответ Сообщение было отмечено RetykFlash как решение

Решение

Ну как-то так.
C++Выделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <stack>
 
template<typename Operator>
void operate(std::stack<int> &parameters, Operator operate) {
    int b = parameters.top();
    parameters.pop();
    int a = parameters.top();
    parameters.pop();
    parameters.push(operate(a, b));
}
 
int main() {
 
    std::stack<int> numbers;
 
    int number = 0;
    bool isNumber = false;
    std::cin >> std::noskipws;
    for (unsigned char c; std::cin >> c;) {
        switch (c) {
            case '+':
                operate(numbers, [](auto a, auto b) { return a + b; });
                break;
            case '-':
                operate(numbers, [](auto a, auto b) { return a - b; });
                break;
            case '*':
                operate(numbers, [](auto a, auto b) { return a * b; });
                break;
            case '/':
                operate(numbers, [](auto a, auto b) { return a / b; });
                break;
            case ' ':
                if (isNumber) {
                    numbers.push(number);
                    number = 0;
                    isNumber = false;
                }
                break;
            default:
                isNumber = true;
                number = number * 10 + (c - '0');
                break;
        }
    }
 
    std::cout << numbers.top();
 
    return 0;
}
2
0 / 0 / 0
Регистрация: 22.11.2023
Сообщений: 14
28.11.2023, 20:01  [ТС] 3
Огромное спасибо! Я теперь понял, как решать самую простую и известную задачу про стеки! (Ха-ха, собирается, блин, стать программистом!)
0
28.11.2023, 20:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2023, 20:01
Помогаю со студенческими работами здесь

Обратная польская нотация через структуру
есть такая структура, как через нее сделать ОПН? /*ФУНКЦИЯ ДОБАВЛЕНИЯ ЭЛЕМЕНТА В СТЕК*/ void...

Польская инверсная нотация
помогите пожалуста зделать !!! уже ниделю сижу никак не могу зделать ((

Обратная польская запись
Что такое обратная польская запись и как её реализовать на С++? Почему когда в программе я пишу...

Обратная польская запись
Вот задача: ввести операцию обычной записью, она выводиться польской и выдает ответ . Как вводить...

Обратная польская запись
Доброго времени суток. Нужно сделать программу которая переводит арифм. выражение в обратную...

Обратная польская запись
Нужно реализовать обратную польскую запись с помощью стека (стек должен быть задан массивом)

Обратная польская запись
В общем такой вопрос. Пользуюсь алгоритмом Дейкстры ( - 1 +- - 2 */ - 3 У меня в задании есть...


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

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