0

私の宿題として、文字列として与えられた方程式を計算するプログラムを書かなければなりません。プログラムの一部は、中置式を後置式に解析する関数です。これが私のコードです:

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 のような方程式を除くすべての条件で機能することです。何か案は?リクエストされた更新を行いました

4

0 に答える 0