C++程序出现问题,求高手
#include<iostream>#include<stack>#include<string>#include<iomanip>usingnamespacestd;d...
#include<iostream>
#include<stack>
#include<string>
#include<iomanip>
using namespace std;
double eval(string e)
{ stack<double> s;
double k,t,sum;
int i=e.size(),j;
for(j=0;j<i;j++)
{ if(e[j]=='+'||e[j]=='*'||e[j]=='/'||e[j]=='-')
{ t=s.top();
s.pop();
k=s.top();
s.pop();
if(e[j]=='+') sum=k+t;
if(e[j]=='-') sum=k-t;
if(e[j]=='*') sum=k*t;
if(e[j]=='/') sum=k/t;
s.push(sum);
}
else s.push((double)(e[j]-96));
}
return s.top();
}
int main()
{ int ab;
string ad;
cin>>ab;
for(int i=0;i<ab;i++)
{ getline(cin,ad);
cout<<fixed<<setprecision(2)<<eval(ad)<<endl;
}
return 0;
}
问题是 cin>>ab; 这里有问题,如果我把它去掉,然后随便赋值给ab,是没问题的,但是如果自己用cin输入就会在运行的时候错误退出 展开
#include<stack>
#include<string>
#include<iomanip>
using namespace std;
double eval(string e)
{ stack<double> s;
double k,t,sum;
int i=e.size(),j;
for(j=0;j<i;j++)
{ if(e[j]=='+'||e[j]=='*'||e[j]=='/'||e[j]=='-')
{ t=s.top();
s.pop();
k=s.top();
s.pop();
if(e[j]=='+') sum=k+t;
if(e[j]=='-') sum=k-t;
if(e[j]=='*') sum=k*t;
if(e[j]=='/') sum=k/t;
s.push(sum);
}
else s.push((double)(e[j]-96));
}
return s.top();
}
int main()
{ int ab;
string ad;
cin>>ab;
for(int i=0;i<ab;i++)
{ getline(cin,ad);
cout<<fixed<<setprecision(2)<<eval(ad)<<endl;
}
return 0;
}
问题是 cin>>ab; 这里有问题,如果我把它去掉,然后随便赋值给ab,是没问题的,但是如果自己用cin输入就会在运行的时候错误退出 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询