算法训练 前缀表达式

来源:互联网 发布:python正则匹配 编辑:程序博客网 时间:2024/06/03 06:44
问题描述
  编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值。输入格式为:“运算符 对象1 对象2”,其中,运算符为“+”(加法)、“-”(减法)、“*”(乘法)或“/”(除法),运算对象为不超过10的整数,它们之间用一个空格隔开。要求:对于加、减、乘、除这四种运算,分别设计相应的函数来实现。
  输入格式:输入只有一行,即一个前缀表达式字符串。
  输出格式:输出相应的计算结果(如果是除法,直接采用c语言的“/”运算符,结果为整数)。
  输入输出样例
样例输入
+ 5 2
样例输出

7

实现代码:

#include<iostream>#include<cstring>using namespace std;int ff( char ch , int x , int y){     if(ch == '+')              return x + y ;else if(ch == '-')          return x - y ;else if(ch == '*')          return (x) * (y) ;else if(ch == '/')          {            if( y )        // 如果除数不为零则进行下面的运算          return (x) / (y) ;      }}int main(){int m , n ,t;string s_char ;while(getline( cin , s_char ))  //使用 getline来使输入的字符串含有空格 {//表示前一个运算对象是 10 if(s_char[3] == '0' ){     if(s_char[6] == '0')   //后一个对象是 10                    cout << ff(s_char[0] , 10 , 10 ) << endl ;             else if(s_char[6] == '\0') //后一个运算对象小于 10                   {                  cout << ff(s_char[0] , 10 , s_char[5] - '0' ) << endl ;                  }        }        else if(s_char[3] == ' ')//表示前一个运算对象小于 10           {          if(s_char[5] == '0') //后一个运算对象为 10                    cout<<ff(s_char[0] , s_char[2] , 10 ) << endl ;    else if(s_char[5] == '\0')  //后一个运算对象小于 10              cout<<ff(s_char[0] , s_char[2] - '0' , s_char[4] - '0') << endl ;          }}return 0;}



0 0