代码有点像
List<Rat>
here is the actual code with some comments,我已经尝试将中缀转换为postfix的程序。这是我的意见和问题...
cin >> n // test cases
for( n times )
{
.....
for(;;)
{
getline(cin,inp) //inp is supposed to be +,-,*,\,0-9,if simply enter pressed program passes out of loop
for(;;)
{
if (inp[0] == '*')
{
do stuff...
}
if (inp[0] == '\')
{
do stuff...
}
if (inp[0] == '+') \\ this is where the problem occurs
{
do stuff...
}
.....
.....
}
}
return 0 ;
}
我尝试了最好的解释代码和问题的问题,我问这个问题,因为问题对我来说完全是模棱两可的,需要任何解释请告诉我。
另外,给出任何建议调试这些问题,我之前有这样的错误,我不能每次问这里。将任何推荐给初学者 - &gt; amatuer编码器以解决此类分段错误。
谢谢和问候
答案 0 :(得分:0)
一般建议:
使用您提供的断点和其他功能来查找问题。
自c ++诞生以来已有几十年了,不会有这样的错误。
DIAG:
对于调试消息,将cout<<"+ detected";
更改为cout<<"+ detected"<<endl ;
。 endl
用于刷新缓冲区并将其放入屏幕。
它会输入你的if条件并且在
失败 if (stk.top() == '*' || stk.top() == '/' && stk.size() != 0 )
如果stk.top()
成功,当然stk.size() != 0
。它不是空的。
如果stk.empty() == true
,stk.top()
将尝试从空堆栈中获取某些内容并将seg错误抛回。
并且在这之下只有几行,另一个if-statement
出现了同样的错误:
else if (stk.top() == '-' && stk.size() != 0 )
我更改了这些行,代码适用于输入序列1 3 * / +
。