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

Перевод в обратную польскую запись

19.02.2022, 12:19. Показов 412. Ответов 0

Author24 — интернет-сервис помощи студентам
Проблема в отображении символов(знак + - * /)

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <iostream>
#include <string>
#include <Windows.h>
 
using namespace std;
 
int pror(char c){
    int p;
    switch (c)
    {
    case '(':
        p = 0;
    case ')':
        p = 1;
    case '+':
    case '-':
        p = 5;
        break;
    case '*':
    case '/':
        p = 4;
        break;
    case '^':
        p = 2;
        break;
    default:
        break;
    }
    return p;
}
 
 
class stackSTR {
private:
    int size, top;
    char a[100];
public:
    stackSTR() { top = 0; }
    void push(char var) {
        a[++top] = var;
    }
    char pop() {
        return a[top--];
    }
    char see() {
        return a[top];
    }
};
 
int main(){
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    stackSTR stk;
    cout << "Enter your ... " << endl;
    string q, w, tmp;
    cin >> q;
    for (int i = 0; i < q.length(); i++) {
        if (!isdigit(q[i])) {
            if (stk.see()==0) {
                stk.push(q[i]);
            }
            else if((pror(q[i])>=stk.see())) {
                if (q[i] == ')') {
                    while (stk.pop() != '(') {
                        w += stk.pop();
                    }
                    stk.pop();
                }
                else {
                    stk.push(q[i]);
                }
            }
            else {
                while (stk.pop() != 0) {
                    w += stk.pop();
                }
            }
            
        }
        else {
            w += q[i];
            cout << w << endl;
        }
    }
    cout << w << endl;
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2022, 12:19
Ответы с готовыми решениями:

Перевод в обратную польскую нотацию
Добрый вечер. Для реализации некоей сложной (на мой взгляд) программы понадобился перевод в...

Строку в обратную польскую запись
Подскажите, как представить выражение из строки в обратную польскую запись и потом посчитать?...

цикл в обратную польскую запись
Смысл такой - на входе есть файл,где записан цикл.Программа должна преобразовать запись в обратную...

Преобразование в обратную польскую запись
#include &lt;iostream&gt; using namespace std; struct stack { char data; stack* next; };...

Используя стек реализовать обратную польскую запись
Используя стек реализовать обратную польскую запись.​ ОПЗ -​ форма записи математических и...

0
19.02.2022, 12:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2022, 12:19
Помогаю со студенческими работами здесь

Как сосчитать обратную польскую?
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #define N 255 #define OK 1 #define NotOK 0 #define Op 5...

Перевод из обычной формы записи в польскую
Нужно перевести выражение ( a + b ) * ( c – d ) / ( e + ( f -g ) ) в польскую форму записи. Должно...

Перевод в Обратную Польскую Запись
День добрый! Надо было написать программу, переводящую простые мат. формулы из обычного вида в ОПЗ...

Перевод в обратную польскую запись (ОПЗ)
Здравствуйте, помогите перевести в обратную польскую запись следующее арифметическое выражение:...

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


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

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

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