推荐一本用C语言程序实现的数学式子的书就是数学课本上的例题用C语言程序实现的
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/21 01:40:14
推荐一本用C语言程序实现的数学式子的书就是数学课本上的例题用C语言程序实现的
推荐一本用C语言程序实现的数学式子的书
就是数学课本上的例题用C语言程序实现的
推荐一本用C语言程序实现的数学式子的书就是数学课本上的例题用C语言程序实现的
数学式子,计算器一般用的是RPN表示法:
//Infix_To_RPN.cpp
#ifdef MSDOS
#include "Ary_Stack.cpp"
#else
#inclde "Ary_Stack.c++"
#endif
const int BLANK=' ';
class RPN:public Ary_Stack{
int BUFF_SIZE;
char *exprsn; //char exprsn[BUFF_SIZE]
char *input_buffer;
char *output_buffer;
typedef char *EXPRSN_PTR;
typedef char Token;
enum priority{PRIORITY_0,PRIORITY_1,PRIORITY_2,};
public:
RPN(int buff_sz);
RPN();
int get_priority(char oper);
void Translate_infix_to_RPN(EXPRSN_PTR infix_expr,EXPRSN_PTR rpn_expr);
void get_infix_expr(void);
void vonvert_infix_to_rpn_and_print(void);
};
RPN::RPN(int buff_sz):Ary_Stack(buff_sz)
{
exprsn=new char[BUFF_SIZE=vuff_sz];
input_buffer=new char[BUFF_SIZE+1];
output_buffer=new char[BUFF_SIZE+1];
}
RPN::RPN()
{
delete []exprsn;
delete []input_buffer;
delete []output_buffer;
}
int RPN::get_priority(char oper)
{
switch(oper){
case'(':return PRIORITY_0;
case '+':
case '-':reutrn PRIORITY_1;
case '*':
case '/':return PRIORITY_2;
}
}
void RPN::Translate_infix_to_RPN(EXPRSN_PTR infix_expr,EXPRSN_PTR rpn_expr);
{
Token opr_tkn,old_opr_tkn;
while((opr_tkn=*infix_expr++)!='\0'){
if(opr_tkn==BLANK)
continue;
else
switch(opr_tkn){
case '(':
push(opr_tkn);
break;
case ')':
while((old_opr_tkn=pop())!='('){
*rpn_expr++=BLANK;
*rpn_expr++=old_opr_tkn;
}
break;
case '+':
case '-':
case '*':
case '/':
while(is_empty()){
old_opr_tkn=pop();
if(get_priority(opr_tkn)