我正在尝试比较这些符号(,[,{在用户输入的算术问题中。当所有符号都有匹配的对应符号,或者没有匹配的对应符号时,它会适当地响应用户。>
使用了4个方程。
(((3 + 4) / {{999.7} - 9}));
Passed.
8 * 3 + 2 / (4) - 33 + 7 * 1 + 2;
Passed.
(4+3 - {2*2)};
Passed.
(4 + 4) - ({5 + (4 - 1/2)}));
Assertion 'stackTop != 0 failed.
我发现,通过消除符号'('的弹出声,可以使输出对以前的错误方程式给出正确的答案,并更改增量,但是,该程序随后对其他错误输出不正确。我很难弄清楚是什么原因导致了探查,但我也不是确切地了解断言错误的含义以及如何解决它。下面是代码。
#include<iostream>
#include<string>
#include<stdlib.h>
#include "myStack.h"
using namespace std;
int main()
{
stackType<char> stack(15);
char str[100];
cout << "\n\tEnter your choice of an artihmetic expression:";
cin.getline (str, 100, '\n');
int i = 0;
while (str[i] != '\0')
{
switch (str[i])
{
case '{' :
case '[' :
case '(' :
stack.push(str[i]);
break;
case '}' : if (stack.top() == '{')
stack.pop();
break;
case ')' : if (stack.top() == '(')
stack.pop();
break;
case ']' : if (stack.top() == '[')
stack.pop();
break;
}
i++;
}
if (stack.isEmptyStack() )
cout << "Expression has matching grouping symbol";
else
cout << "Expression does not have matching grouping symbols";
cout << "\n\n\t";
return 0;
}
答案 0 :(得分:0)
在空堆栈上调用top会引发该异常。
以下输入将首先显示顶部
)