Временного исправления для преобразования постфиксного
привет, ребята.я сделал программу для преобразования ifix в постфикс, но компилятор не дает результат, который я хотел.пожалуйста, помогите мне и посмотрите, есть ли какая - либо ошибка в моем коде спасибо
Что я уже пробовал:
#include<iostream> #include<cstring> #include<stack> using namespace std; void disp(char postfix[],int size) { for (int i=0;i<size;i++) { cout<<postfix[i]; } } int priority(char); int main() { char weight; char c; int tcount=0; //counter loop to count the number of brackets// int ecount=0; //counter loop to count the number of brackets// int size=8; char equ[8]; stack<char> s; char postfix[8]; cin.getline(equ,size); for(int i=0;i<size;i++ ) { if(equ[i]=='(') { tcount++; } if(equ[i]==')') { ecount++; } } if(tcount==ecount) { cout<<"equation is valid"<<endl; } else cout<<"equation is not valid"<<endl; for(int i=0;i<size;i++) { c=equ[i]; if(c!='+' || c!='-' || c!='*' || c!='/') { postfix[i]=c; } else if(c=='(') s.push(c); else if(c==')') { while( !s.empty() && s.top()!= '(' ) { postfix[i]=s.top(); s.pop(); }} if(c=='+' || c=='-' || c=='*' || c=='/') { weight=priority(c); if(weight<=priority(s.top())) { postfix[i]=s.top(); s.pop(); s.push(c); } else s.push(c); while (!s.empty()) { postfix[i] = s.top(); s.pop();} } } disp(postfix,size); return 0; } int priority(char s) { if(s=='+' || s=='-') return 0; if(s=='*' || s=='/') return 1; }
jeron1
"компилятор не выдает результат, который я хотел", поэтому ваш код не компилируется и, следовательно, не способен работать? или ваш код компилируется и запускается, но вы не получаете ожидаемых результатов? В любом случае необходимы более конкретные детали.
Member 14042057
однако я хочу, чтобы выход, который преобразует временного исправления, чтобы постфикс
Member 14042057
он не дает постфикс в качестве выходного сигнала,а только показывает, является ли уравнение действительным или нет