北京大学 程序设计与算法 表达式求值

Posted invictus-gaming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了北京大学 程序设计与算法 表达式求值相关的知识,希望对你有一定的参考价值。

表达式由 项+或者-项 组成

项由 因子*或者/因子 组成

可以连加连减或者连连城连除

因子由 左括号 表达式 右括号组成

#include<iostream>

#include<cstring>

#include<cstdlib>

using namespace std;

int factor_value();

 int term_value();

int expression_value();

int main()

{

cout<<expression_value()<<endl;

return 0;

}

int expression_value(){

       int result=term_value();//求第一项的值

       bool more=true;//判断这个项有没有后续

       while(more){

              char op=cin.peek();//看一个字符,不取走

              if(op==‘+‘||op==‘-‘ )

              {cin.get();//从输入中取走一个字符

              int value=term_value();

               if(op==‘+‘)result+=value;

               else result-=value;

             }

             else more=false;

       }

       return result;

}

int term_value()//求一个项的值

{

       int result=factor_value();//求第一个因子的值

       while(true){

              char op=cin.peek();

              if(op==‘*‘||op==‘/‘){

                     cin.get();

                     int value=factor_value();

                     if(op==‘*‘)

                     result*=value;

                     else result/=value;

              }

              else break;

       }return result;

}

int factor_value()

{int result=0;

char c=cin.peek();

if(c==‘(‘)//这因子由左括号 表达式 右括号组成

{

       cin.get();//去掉左括号

       result=expression_value();

       cin.get();//去掉右括号

}

else{

       while(isdigit(c))//由数字字符组成

       {

              result=10*result+c-‘0‘;

              cin.get();

              c=cin.peek();

       }

}

return result;

}

以上是关于北京大学 程序设计与算法 表达式求值的主要内容,如果未能解决你的问题,请参考以下文章

数据结构算法C语言实现--- 3.2栈的应用举例:迷宫求解与表达式求值

程序设计与算法

数据结构与算法之深入解析“逆波兰表达式求值”的求解思路与算法示例

数据结构与算法-使用栈《逆波兰表达式求值问题》

求C++ 表达式求值得程序,最好简单说明数据结构和大致方法

栈的应用——表达式求值