由PHP实现计算实现代码的四个算术表达式 浏览:480

PHP实现:
复制代码代码如下所示:
< PHP

*计算四个表达式
* /
error_reporting(e_all);
$口=(1 + 2 *(3 + 5)/ 4)*(3 +(5-4)* 2);
arr_exp美元=阵();
为($我= 0;$我< strlen($口);$ i++){
arr_exp美元{ } = { }美元美元指数;
}
结果= calcexp(array_reverse美元(美元arr_exp));
回声。$ = $结果;
功能calcexp(美元指数){
arr_n美元=阵();
arr_op美元=阵();
而(($ = array_pop(美元指数))!=
如果($ ={({))
$温度=阵列();$报价= 1;endquote = 0美元;
而(($ t = array_pop(美元指数))!=
如果($ = = {({))
报价+ +;
}
如果($ ={))
endquote美元+ +;
如果(美元报价= = $ endquote){
打破;
}
}
array_push($温$ T);
}
温度= array_reverse美元($温度);
array_push(arr_n美元,calcexp($ TEMP));
} else if($ = = = ={ | | * $ S)
N2 = array_pop美元(美元指数);
如果($ = { = {({))
$温度=阵列();$报价= 1;endquote = 0美元;
而(($ t = array_pop(美元指数))!=
如果($ = = {({))
报价+ +;
}
如果($ ={))
endquote美元+ +;
如果(美元报价= $ endquote)
打破;
}
array_push($温$ T);
}
温度= array_reverse美元($温度);
N2 = calcexp美元($温度);
}
美元=美元;
N1 = array_pop美元(美元arr_n);
$结果=操作($ N1,$ OP,n2);
array_push(arr_n美元,美元的结果);
} elseif($ = = = = { | |+的' - ')
array_push(arr_op美元,美元的);
其他{ }
array_push(arr_n美元,美元的);
}
}
N2 = array_pop美元(美元arr_n);
而(($ OP = array_pop($ arr_op))!=
N1 = array_pop美元(美元arr_n);
$ =操作($ N1,$ OP,n2);
}
返回$ n2;
}
函数操作($ N1,$ OP,n2){
开关($ OP){
+案:
返回intval($ N1)+ intval($ N2);
打破;
案例-:
返回intval($ N1)- intval($ N2);
打破;
*案例:
返回intval($ N1)* intval($ N2);
打破;
案例:
返回intval($ N1)/ intval($ N2);
打破;
}
}

这个实现使用两个堆栈,一个用于存储数字,一个用于存储操作符,然后在括号后面递归插入圆括号。执行的方式有点笨拙。在此基础上,增加了逆波兰表达式的算法。
推荐文章1
广告