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

Обратная Польская Нотация - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В символьной строке удалить все слова, состоящие более чем из N букв http://www.cyberforum.ru/cpp-beginners/thread177265.html
Не использовать дефолтные функции работы со строками (например strstr, strlen) -В символьной строке удалить все слова, состоящие более чем из N букв.
C++ Создать класс "Вещественное число" Создать класс:"Вещественное число" Элементы класса: Поле задает значение вещественного числа; Конструктор для инициализации поля; Метод для вычисления квадратного корня из вещественного числа; Создать 1 объект данного класса, вывести значение квадратного корня. http://www.cyberforum.ru/cpp-beginners/thread177257.html
C++ функцию, которая перемещает элементы с 1 стека во второй
из введенных целых чисел сформулировать два списка типа стек. разработать функцию, которая перемещает все элементы с 1 стека во второй, пока значение в вершине Первого стека не станет четным (в основную программу передавать адреса новых вершин первого и второго стеков ... если в 1 стеке НЕТ четным элементов, то в 2 переместить все элементы ) в функции операции выделения и освобождения памяти не...
Макросы C++
Написать макрос находящий большое из 4 чисел в студии с++
C++ Функции http://www.cyberforum.ru/cpp-beginners/thread177181.html
Помогите пожалуйста решить данный пример с использованием функций. Вот мои наработки но у меня не совсем получилось: #include <iostream> #include <math.h> #include <conio.h> using namespace std; double A(double s, double t); int main () { double t; double s;
C++ Необходимо решить задание Здравствуйте помогите пожалуйста задача такая: Даны два числа A и B (A<B). Вывести в порядке убывания все целые числа, расположенные между A и B (не включая числа A и B) а так же количество этих N чисел. подробнее

Показать сообщение отдельно
turtLe
3 / 3 / 2
Регистрация: 11.11.2009
Сообщений: 41

Обратная Польская Нотация - C++

16.10.2010, 18:56. Просмотров 4133. Ответов 6
Метки (Все метки)

Пытался реализовать ОПН....ничего не вышло,обращаюсь за помощью: в чем ошибка(и)?
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <iostream>
using namespace std;
 
struct stack{
    char key;
    stack *next;
}*top=NULL,*p=new stack;
 
void push(char S)
{
    if(p!=NULL)
    {
        p->key=S;
        p->next=top;
        top=p;
    }
    else return;
 
}
 
char pop()
{
    char S;
    stack *p=new stack;
    p=top;
    S=p->key;
    top=p->next;
    delete p;
    return S;
}
 
int main()
{
    char Sinput[21];
    char Soutput[21];
    int k=0,n=0,Q;
    p=NULL;
    cout<<"Enter a mathematical expression: ";
    gets(Sinput);
    cout<<"\n";
    Q=strlen(Sinput);
    while(Q>k)
   {
        if ((Sinput[k]>=0)||(Sinput[k]<=9))
            {
                Soutput[n]=Sinput[k];
                k++;
                n++;
            }
        switch(Sinput[k])
        {
            
            case '(':
            {
                push(Sinput[k]);
                k++;
                break;
            }
            case ')':
            {
                    while(pop()!='(')
                    {
                        Soutput[n]=pop();
                        n++;
                    }
                    pop();break;
            }
             case '+':
             {
                 if((p->key=='-')||(p->key=='+'))
                 {
                     Soutput[n]=pop();
                     n++;
                 }
                 push(Sinput[k]);
                 k++;
                 break;
             }
             case '-':
             {
                 if((p->key=='-')||(p->key=='+'))
                 {
                     Soutput[n]=pop();
                     n++;
                 }
                 push(Sinput[k]);
                 k++;break;
             }
             case '*':
             {
                 if((p->key=='*')||(p->key=='^'))
                 {
                     Soutput[n]=pop();
                     n++;
                 }
                 push(Sinput[k]);
                 k++;break; 
             }
             case '/':
             {
                 if((p->key=='^'))
                 {
                     Soutput[n]=pop();
                     n++;
                 }
                 push(Sinput[k]);
                 k++;break;
             }
             case '^':
             {
                 push(Sinput[k]);
                 k++;
                 break;
             }
        }
        k++;
        n++;
    }
 
    if (Q==k)
        while(p!=NULL)
        {
            Soutput[n]=pop();
            n++;
        }
 
    cout<<"\n";
    for(int i=0;i<=strlen(Soutput);i++)
    cout<<Soutput[i]<<" ";
system("pause");
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru