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

Префиксная польская запись

07.06.2015, 17:29. Показов 4021. Ответов 1
Метки нет (Все метки)

Здравствуйте, очень нужна помощь умных людей(
Задача: Написать код для преобразования инфиксной записи выражения в префиксную, вообще нет идей, совсем утонула. Помогите, пожалуйста.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2015, 17:29
Ответы с готовыми решениями:

Префиксная и постфиксная запись инкремента
#include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); int х...

Const методы суффиксная/префиксная запись
Какая разница между этими записями? const void Method(); void Method() const

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

Польская запись
Здравствуйте, у меня возникли некоторые проблемы с данной задачей(если сказать точнее, то я ее...

1
0 / 0 / 1
Регистрация: 22.04.2015
Сообщений: 22
14.06.2015, 20:17  [ТС] 2
Лучший ответ Сообщение было отмечено Hasuni как решение

Решение

Написала код, который не хочет работать, помогите =.=

main.cpp
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
#include "Pol.h"
char q[30], p[30];
char flag='Y';
void main()
{
    setlocale(0,"Rus");
    Stack st;
    int i, j, n;
    char ch;
    system("cls");
    while(flag=='Y'|| flag=='y')
    {
        for (i=0;i<30;i++)
            p[i]=' '; q[i]=' ';
    }
    cout<<"Введите инфиксную запись выражения ";
    cin>>q;
    n=0;
        while(q[n]!= '\0')
            n++;
    i=j=n-1;
    Add('(');
    while (i>=0)
    {
        switch (q[i])
        {
        case ')':Add(')');
            break;
        case '+':  while (st[j] == '*' || st[j] == '/' || st[j] == '^')
            p[j--] = Delete();
            Add(q[i]);
                break;
        case '-':while (st[j] == '*' || st[j] == '/' || st[j] == '^')
            p[j--] = Delete();
            Add(q[i]);
                break;
        case '*':while (st[j] == '^')
            p[j--] = Delete();
                     Add(q[i]);
                break;
        case '/':while (st[j] == '^')
            p[j--] = Delete();
            Add(q[i]);
                break;
        case '^': Add(q[i]);
                break;
        case '(': while (st[j] != ')')
            p[j--] = Delete();
            ch = Delete();
                       break;
        default: p[j--]=q[i];
            break;
        }
        j--;
    }
    while(st[j]!= '(')
        p[j--] = Delete();
    cout<<endl<<"Данное инфиксное выражение:  "<<q<<endl;
    cout<<endl<<"Получившееся префиксное выражение:  "<<p<<endl;
    cout<<endl<<"Для продолжения нажмите Y  "<<endl;
    cin>>flag;
}
Pol.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <conio.h>
#include <math.h>
#include<stdlib.h>
using namespace std;
struct Stack
{
    char A[30];
    int count;
};
void Creation(Stack *p);
int Full(Stack *p);
void Add(Stack *p);
void Delete(Stack *p);
int Top(Stack *p);
int Size(Stack *p);
Pol.cpp
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
#include "Pol.h"
char q[30], p[30];
char flag = 'Y';
 
void Creation(Stack *p)
{
    p->count = 0;
}
//проверка стека на пустоту
int Full(Stack *p)
{
    if (p->count == 0) return 1;
    else if (p->count == n) return -1;
    else return 0;
}
//добавление элемента
void Add(Stack *p)
{
    char value;
    cin >> value;
    p->A[p->count] = value;
    p->count++;
}
//удаление элемента
void Delete(Stack *p)
{
    p->count--;
}
//вывод верхнего элемента
int Top(Stack *p)
{
    return p->A[p->count - 1];
}
//размер стека
int Size(Stack *p)
{
    return p->count;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2015, 20:17
Помогаю со студенческими работами здесь

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

Обратная польская запись
В обратной польской записи, которую также называют постфиксной, операция записывается после двух...

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

Обратная польская запись
Нужна помощь. Есть программа с общей польской записью. Программа принимает только буквенное...


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

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

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