带括号的表达式求值:以字符序列的形式从终端输入不含变量的整数表达式,判断括号匹配是否正确,并利用给定的算符优先关系,实现对算术四则混合运算表达式的求值,并演示在求值过程中运算符栈、操作数栈、输入字符和主要操作的变化过程。
下面是我写的程序,希望高手们帮忙改改!!我刚学数据结构,不大会写,如果高手们觉得我写的实在是没法看,有想展示一下的或者想温顾一下的话可以重新谢谢!小弟在此谢过了!
#include
using namespace std;
#define N 50
#define TRUE 1
#define FALSE 0
#include "stack"
#include
#include
int Cint(char mychar){
return (mychar-48);
}
double Calc(double a,double b,char c){
double result;
switch(c){
case '+':result=a+b;break;
case '-':result=a-b;break;
case '*':result=a*b;break;
case '/':result=a/b;break;
}
return result;
}
char Priority(char y,char x){
char priority='';break;
case '*':
case '/':if(y=='(' || y=='#'|| y=='+' || y=='-')priority='>';break;
case '(':priority='>';break;
case ')':if(y=='(')priority='=';break;
case '#':if(y=='#')priority='=';break;
default:priority='E';
}
return priority;
}
bool in(char c){
if(c=='+'||c=='-'||c=='*'||c=='/')
return TRUE;
}
void main()
{ char c,theta;
int a,b,t;
stackOPTR;
OPTR.push('#');
stackOPND;
c=getchar();
while(c!='#'||OPTR.top!='#')
{
if(!in(c))
{ OPND.push(c);
c=getchar();
}
else
switch(Priority(OPTR.top,c))
{ case '':OPTR.pop();
OPND.pop();
OPND.pop();
OPND.push(Calc(a,b,theta));
break;
}
}
}
下面是编译错误:
error C2664: 'Priority' : cannot convert parameter 1 from 'const int &(void) const' to 'char';我不明白,水平太低
高手们发扬风格啊 !这种问题对你们来说简单,对我来说,哎.........!!
我已经把 stackOPTR;改成 stackOPTR;,但错误依旧
|