0

As my homework I have to write a program that calculates an equation given as string. A part of the program is a function parsing an infix expression into postfix. Here is my code:

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;
}

The problem is that it works in all conditions except equations like 4/6. Any ideas? I've just made requested updates

herohuyongtao
  • 49,413
  • 29
  • 133
  • 174

0 Answers0