黄豆豆和金星谁厉害:给出后缀表达式求值程序double rpn_calculator(std::iostream& in)它从输入流in上读入后缀表达式,返回表达式的结果。假设输入流in上只包括+,-,*,/以及实数。
来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 18:18:20
6.给出后缀表达式求值程序
double rpn_calculator(std::iostream& in)
它从输入流in上读入后缀表达式,返回表达式的结果。假设输入流in上只包括+,-,*,/以及实数。
/****************************************************************************/
/*==================================================================*/
/*****************************************************************************/
#include
using namespace std;
#define SIZE 10 //运算的数的最多个数;
double rpn_calculator(std::istream& in) //题目中要求设计的函数;
{
char ch;
double d[SIZE];
int b=0;
std::cout<<"请输入后缀表达式,以#结束:"<
in>>ch;
while(ch!='#'){ //以#结束;
if(ch>='0'&&ch<='9'){ //判断是否为数字;
in.putback(ch);
in>>d[b];
b++;
}
else if(ch=='+'||ch=='-'||ch=='*'||ch=='/'){ //判断是否为运算符;
b--;
if(ch=='+'){ //后缀运算符的运算规则;
d[b-1]=d[b-1]+d[b];
}
else if(ch=='-'){
d[b-1]=d[b-1]-d[b];
}
else if(ch=='*'){
d[b-1]=d[b-1]*d[b];
}
else if(ch=='/'){
d[b-1]=d[b-1]/d[b];
}
}
in>>ch;
}
return d[b-1];
}
int main()
{
double result=rpn_calculator(std::cin); //题中函数的运用;
std::cout<
return 0;
}
(1)式子3-4/(5*(6+7))的两种实现:
(2)式子4/2*3-(6+4)的实现:
/****************************************************************************/
/*==================================================================*/