第二个点没过
查看原帖
第二个点没过
969221
Fryderyk_Chopin楼主2023/10/1 16:27

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

#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;
}
2023/10/1 16:27
加载中...