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开大一点