表达式计算

xiaoxiao2021-02-27  166

//递归 /*表达式计算 输入为四则运算表达式,仅由数字,+ ,- ,* ,\ ,(、)组成,没有空格,要求求其值。 假设运算符结果都是整数。“/"结果也是整数 */ //输入(2+3)*(5+7)+9/3 //输出 63 #include<bits/stdc++.h> #include<cstring> #include<cstdlib>// atof函数:将字符串类型的浮点数转化为double 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; result/=value; } else break; } return result; } int factor_value()//求一个因子的值 { int result =0; char c=cin.peek(); if(c=='('){ //(290+34) cin.get(); result=expression_value(); cin.get(); } else{ //789 while(isdigit(c)){ result=10*result+c-'0'; cin.get(); c=cin.peek(); } } return result; }
转载请注明原文地址: https://www.6miu.com/read-14110.html

最新回复(0)