该代码应该从文件中读取后缀问题,并将答案写入新文件。我的错误是在代码的if else if部分中。我试图将字符数组移到顶部,但它仍然存在。
void main()
{
ifstream postin("postfix.txt");
ofstream postout("postfixAnswers.txt");
char oper = 'c';
int i = 0;
double number = 0;
while(oper != '$')
{
while(oper != '\n'|| oper != '$')
{
stack operands;
while(oper != ' ' || oper != '\n' || oper != '$')
{
char a[90];
i=0;
oper = postin.get();
do
{
if(oper!=' ')
{
a[i]= oper;
i++;
oper = postin.get();
}
}while(oper != ' ' && oper != '\n');
if(isOperand(a))
{
double number = atof(a);
operands.Push(number);
}
else
{
operands.Pop(number);
double b = number;
operands.Pop(number);
double a = number;
if(a[0] == '+')
{
operands.Push(a+b);
}
else if(a[0] == '-')
{
operands.Push(a-b);
}
//DIV by ZERO exception
else if(a[0] == '/')
{
operands.Push(a/b);
}
else
{
operands.Push(a*b);
}
}
}
operands.Pop(number);
postout << number<< endl;
operands.~stack();
}
}
postin.close();
postout.close();
}
最佳答案
double a = number;
if(a[0] == '+')
您的变量
a
是double
。看起来您已经声明了两个名称相同的变量a
,一个是char[90]
类型,另一个是double
类型。使用不同的变量名。关于c++ - 为什么我收到读取 “subscript requires array or pointer type”的错误,我试图读取数组以查看其操作数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9901522/