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输入就会在运行的时候错误退出
展开
 我来答
iicup
2013-04-20 · TA获得超过890个赞
知道小有建树答主
回答量:597
采纳率:85%
帮助的人:176万
展开全部
因为输入cin>>ab;后, cin里会会留一个回车,
这样,第一次getline(cin,ad);得到的字符串就是 ""
这样, 就不能保证eval(ad)的正确执行,
修改:
getline(cin,ad);
if(ad.size() <= 0) continue; // 加上这个判断
cout<<fixed<<setprecision(2)<<eval(ad)<<endl;
有郊范围
2013-04-20 · TA获得超过214个赞
知道答主
回答量:297
采纳率:0%
帮助的人:148万
展开全部
getline(cin,ad);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式