rpn — алгоритм Шейкерного двора Дейкстры в переполнении стека

В качестве домашней работы я должен написать программу, которая вычисляет уравнение в виде строки. Часть программы — это функция, которая разбирает инфиксное выражение в постфикс. Вот мой код:

void dijkstra(string& s)
{
int i,j=s.size();
stack < char > znaki;
string output=" ";
string znak;
for(i=0; i<j;++i)
{
if((int(s[i])>47&&int(s[i])<58)||s[i]=='.')
{
output+=s[i];
}
else if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/')
{
output+=" ";
if(znaki.empty())
{
}
else
{

if((s[i]=='+'||s[i]=='-'))
{
znak=znaki.top();
znaki.pop();
output+=znak;
}
else if(s[i]=='*')
{
if(znaki.top()=='*'||znaki.top()=='/')
{znak=znaki.top();
znaki.pop();
output+=znak;

}
}
else if(s[i]=='/')
{
if(znaki.top()=='*'||znaki.top()=='/')
{

znak=znaki.top();
znaki.pop();
output+=znak;

}
}
}
znaki.push(s[i]);

}
else if(int(s[i])=='(')
{
znaki.push(s[i]);
}
else if(int(s[i])==')')
{
while(znaki.top()!='(')
{
output+=znaki.top();
znaki.pop();
}
znaki.pop();
}
}
while(znaki.empty()!=true)
{
output+=znaki.top();
znaki.pop();
}
s=output;
}

Проблема в том, что он работает во всех условиях, кроме уравнений типа 4/6. Есть идеи? Я только что сделал запрошенные обновления

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]