第二个点没过

P1449 后缀表达式

Fryderyk_Chopin @ 2023-10-01 16:27:51

代码写得稀碎,求大佬帮助。

#include<bits/stdc++.h>
using namespace std;
char a,c;
vector <int> ve;
int sum=0,num[11],numm=0,k=1,x,y,flag=0;
int main(){
    while(1){
        cin>>a;
        if(a=='@') break;
        if(a<'0' && a>'9') flag=0;
        else if(a>='0' && a<='9'){
            num[1]=(int)(a-'0');
            for(int i=2;1;i++){
                cin>>c;
                if(c=='.') break;
                else if(c>='0' && c<='9'){
                    num[i]=(int)(c-'0');
                    k++;
                }
            }
            for(int i=k,j=1;i>=1;i--,j++){
                if(k==1){
                    numm=num[1];
                    break;
                }
                else numm+=num[i]*pow(10,j-1);
            }
            ve.push_back(numm);
            numm=0;
            k=1;
        }
        else if(a=='+'){
            if(ve.size()==1){
                x=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                sum+=x;
            }
            else if(ve.size()>1){
                x=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                y=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                sum+=x+y;
            }
        }
        else if(a=='-'){
            if(ve.size()==1){
                x=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                sum-=x;
            }
            else if(ve.size()>1){
                x=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                y=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                sum+=y-x;
            }
        }
        else if(a=='/'){
            if(ve.size()==1){
                x=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                sum/=x;
            }
            else if(ve.size()>1){
                x=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                y=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                sum+=x/y;
            }
        }
        else if(a=='*'){
            if(ve.size()==1){
                x=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                if(sum==0) sum=1;
                sum*=x;
            }
            else if(ve.size()>1){
                x=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                y=ve[ve.size()-1];
                ve.erase(ve.begin()+ve.size()-1);
                sum+=x*y;
            }
        }
    }
    cout<<sum<<"\n";
    return 0;
}

by zjw198688 @ 2023-10-28 15:08:59

num开大一点


|