这段代码应该从文件中读取后缀问题,并将答案写到一个新文件中;我的错误在代码的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();
}发布于 2012-03-28 13:16:50
double a = number;
if(a[0] == '+')您的变量a是一个double。看起来您已经用相同的名称声明了两个变量a,一个是char[90]类型,另一个是double类型。使用不同的变量名。
发布于 2012-03-28 13:17:18
您已经将a重新定义为double。在if语句中,a引用的是double,而不是您之前定义的char数组。
double a = number;
if(a[0] == '+')https://stackoverflow.com/questions/9901522
复制相似问题