使用堆栈的后缀求值代码
Postfix Evaluation code Using Stack
我明天有数据结构'LAB'的期末考试!
当我运行这段代码时,我有一个问题!这段代码计算后缀表达式。它是如此简单,但我不知道为什么,当我运行它,并试图除,例如:6/2。它输出的是2而不是3!
+和-和*都是正确的,但除法的问题!你认为问题与库在我的编译器!!
我使用Code::Blocks和Visual c++。
你能帮我一下吗?(
代码:
#include<iostream>
using namespace std;
#include<math.h>
#include<conio.h>
#define stacksize 6
struct stacktype{
float data[stacksize];
int top;
};
void push( stacktype*s, float d){
if ( s->top < 6) {
s->data[s->top]=d;
s->top++;
}
}
float pop(stacktype*s){
if ( s->top != 0){
s->top--;
return s->data[s->top];
}
return 0;
}
float oper(char symbol, float op1, float op2){
switch (symbol){
case '+': return (op1+op2);break;
case '-':return (op1-op2);break;
case '*':return (op1*op2);break;
case '/':return (op1/op2);break;
default: cout<<"illegal operation.......n";
}
return 0;
}
int main() {
float op1,op2,symb,value;
char symbol;
stacktype *s;
s= new stacktype;
s->top=0;
cout<<"Enter The Postfix Expression To Evaluate:: nn";
cin>>symbol;
while ( symbol != '.') {
if ( symbol == '+' || symbol == '-' || symbol == '*' || symbol == '/'){
op2=pop(s);
op1=pop(s);
value=oper(symbol,op1,op2);
push(s,value);
}
else {
if ( symbol == '0') symb =0 ;
else if ( symbol == '1') symb = 1;
else if ( symbol == '2') symb =2 ;
else if ( symbol == '3') symb =3 ;
else if ( symbol == '4') symb = 4;
else if ( symbol == '5') symb =5 ;
else if ( symbol == '6') symb =6 ;
else if ( symbol == '7') symb =7;
else if ( symbol == '8') symb =8 ;
else if ( symbol == '9') symb =9 ;
push(s,symb);
}
cin>>symbol;
}
value=pop(s);
cout<<"The Value:: n"<<value<<endl;
return 0;
}
您的代码为我提供了正确的结果:
6
2
/
.
The Value::
3
请注意,您使用的是反向波兰符号,即操作数必须紧跟在要操作的值之后。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 增量运算符与后缀混淆
- 孤立代码块在结构中引发异常
- 在一行C 中,该代码后缀和前缀的输出的逻辑是什么
- 中缀到后缀表达式转换代码不起作用
- 这个后缀转换 C++ 代码的中缀有什么问题
- 中缀到后缀代码转换
- 这个从后缀数组中获取LCP的代码是如何工作的
- 以下代码片段中 push(po[i]-'0') 对评估后缀表达式的重要性是什么
- 理解后缀表达式求值代码
- 中缀到后缀转换的代码
- 使用堆栈的后缀求值代码