Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DenisMD
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 7
#1

Обратная польская запись - C++

10.06.2013, 16:41. Просмотров 381. Ответов 0
Метки нет (Все метки)

Внизу приведена процедура с сайта e-maxx, на вход подается выражение к примеру "-(12+3)+(-3+4)", на выходе результат, куда в процедуре дописать cout чтобы она выводила это выражение в Обратной польской записи. Спасибо за ранее

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
int calc (string & str) 
{
    bool may_unary = true;//унарный символ
    vector<int> numbers;
    vector<char> op;
    
    for (size_t i=0; i < str.size(); i++)
        if (str[i] != ' ')
            if (str[i] == '(') 
            {
                op.push_back ('(');
                may_unary = true;
            }
            else if (str[i] == ')') {
                //вытаскиваем из стека до открывающей скобки
                while (op.back() != '(')
                    process_op (numbers, op.back()),  op.pop_back();
                op.pop_back();
                may_unary = false;
            }
            else if (is_op (str[i])) {
                char curop = str[i];
                if (may_unary )  
                    curop = -curop;
 
                while (!op.empty() && (
                    curop >= 0 && priority(op.back()) >= priority(curop)
                    || curop < 0 && priority(op.back()) > priority(curop))
                    )
                    process_op (numbers, op.back()),  op.pop_back();
                op.push_back (curop);
                may_unary = true;
            }
            else {
                string operand;
                while (i < str.length() && isalnum (str[i]))
                    operand += str[i++];
                --i;
                if (isdigit (operand[0]))
                    numbers.push_back (atoi (operand.c_str()));
                may_unary = false;
            }
 
    while (!op.empty())
        process_op (numbers, op.back()),  op.pop_back();
    return numbers.back();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 16:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обратная польская запись (C++):

Обратная польская запись - C++
Простите что не совсем в том разделе, просто его больше всего людей посещает) По теме: Как при вычислении выражения из строки...

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

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

Обратная польская запись - C++
Здравствуйте, изучаю обратную польскую запись, столкнулся с такой проблемой: Перерыл множество алгоритмов перевода из обычной записи в...

Обратная Польская Запись - C++
Сам вопрос: Я написал программу, она работает, но препод по Структурам данных сломал ее в два счета. Я нашел ошибку, но как ее исправить...

Обратная польская запись - C++
Пожалуйста помогите, всю голову себе сломал. Задание: &quot;Обеспечить перевод инфиксного выражения в ОПЗ и вычислить его результат. Входные...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2013, 16:41
Привет! Вот еще темы с ответами:

Обратная польская запись - C++
Подскажите, как по обратной польской записи выражения построить дерево выражения Например: дана запись 1 2 + 3 4...

Обратная польская запись - C++
Нужно создать класс с++ для вычисления обратной польской записи с помощь стека.

Обратная польская запись - C++
Нужна помощь. Есть программа с общей польской записью. Программа принимает только буквенное выражение ( например: &quot;a+b+c*d&quot; и т.д), а...

Обратная польская запись. С++ - C++
Необхдимо дописать программу, что бы она работала с унарным минусом. Обратная польская запись, С++. #include &lt;iostream&gt; #include...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru