Heim php教程 php手册 用PHP实现的四则运算表达式计算实现代码

用PHP实现的四则运算表达式计算实现代码

Jun 06, 2016 pm 08:38 PM
Vier Rechenoperationen 表达式

题目要求:有一个四则运算的字符串表达式,编写一个函数,计算四则运算的结果

PHP实现:
代码如下:
/**
* 计算四则运算表达式
*/
error_reporting(E_ALL);
$exp = '(1+2*(3+5)/4)*(3+(5-4)*2)';
$arr_exp = array();
for($i=0;$i$arr_exp[] = $exp[$i];
}
$result = calcexp( array_reverse($arr_exp) );
echo $exp . '=' . $result;
function calcexp( $exp ){
$arr_n = array();
$arr_op = array();
while( ($s = array_pop( $exp )) != '' ){
if( $s == '(' ){
$temp = array(); $quote = 1; $endquote = 0;
while( ($t = array_pop($exp)) != '' ){
if( $t == '(' ){
$quote++;
}
if( $t == ')' ){
$endquote++;
if( $quote == $endquote ){
break;
}
}
array_push($temp, $t);
}
$temp = array_reverse($temp);
array_push($arr_n, calcexp($temp) );
}else if( $s == '*' || $s == '/' ){
$n2 = array_pop($exp);
if( $n2 == '(' ){
$temp = array(); $quote = 1; $endquote = 0;
while( ($t = array_pop($exp)) != '' ){
if( $t == '(' ){
$quote++;
}
if( $t == ')' ){
$endquote++;
if( $quote == $endquote )
break;
}
array_push($temp, $t);
}
$temp = array_reverse($temp);
$n2 = calcexp($temp);
}
$op = $s;
$n1 = array_pop($arr_n);
$result = operation($n1, $op, $n2);
array_push($arr_n, $result);
}elseif( $s == '+' || $s == '-' ){
array_push($arr_op, $s);
}else{
array_push($arr_n, $s);
}
}
$n2 = array_pop($arr_n);
while( ($op = array_pop($arr_op)) != '' ){
$n1 = array_pop($arr_n);
$n2 = operation($n1, $op, $n2);
}
return $n2;
}
function operation( $n1, $op, $n2 ){
switch ($op) {
case '+':
return intval($n1) + intval($n2);
break;
case '-':
return intval($n1) - intval($n2);
break;
case '*':
return intval($n1) * intval($n2);
break;
case '/':
return intval($n1) / intval($n2);
break;
}
}

这个实现方式中使用了两个堆栈,一个用来存储数字,一个用来存储运算符,遇到括号以后就递归进入括号内运算,实现方式有点笨拙,后面补充一下“逆波兰表达式”的算法实现。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie behebt man Fehler in der Python-Ausdruckssyntax? Wie behebt man Fehler in der Python-Ausdruckssyntax? Jun 24, 2023 pm 05:04 PM

Wie behebt man Fehler in der Python-Ausdruckssyntax?

In C und C++ wird Komma zum Trennen von Ausdrücken oder Anweisungen verwendet In C und C++ wird Komma zum Trennen von Ausdrücken oder Anweisungen verwendet Sep 09, 2023 pm 05:33 PM

In C und C++ wird Komma zum Trennen von Ausdrücken oder Anweisungen verwendet

Bibliothek mit vier arithmetischen Operationen, geschrieben in der Go-Sprache: ein einfaches und effizientes mathematisches Berechnungstool Bibliothek mit vier arithmetischen Operationen, geschrieben in der Go-Sprache: ein einfaches und effizientes mathematisches Berechnungstool Dec 23, 2023 am 11:49 AM

Bibliothek mit vier arithmetischen Operationen, geschrieben in der Go-Sprache: ein einfaches und effizientes mathematisches Berechnungstool

Eine einfache Einführung in die vier Rechenoperationen der Go-Sprache Eine einfache Einführung in die vier Rechenoperationen der Go-Sprache Feb 19, 2024 pm 12:18 PM

Eine einfache Einführung in die vier Rechenoperationen der Go-Sprache

Einführung in Exponentialfunktionsausdrücke in der Sprache C Einführung in Exponentialfunktionsausdrücke in der Sprache C Feb 18, 2024 pm 01:11 PM

Einführung in Exponentialfunktionsausdrücke in der Sprache C

Wie die Go-Sprache vier arithmetische Operationen implementiert Wie die Go-Sprache vier arithmetische Operationen implementiert Dec 21, 2023 pm 04:46 PM

Wie die Go-Sprache vier arithmetische Operationen implementiert

Lambda-Ausdruck in Java Lambda-Ausdruck in Java Jun 09, 2023 am 10:17 AM

Lambda-Ausdruck in Java

Implementieren Sie einen einfachen arithmetischen Operator mithilfe der Go-Sprache Implementieren Sie einen einfachen arithmetischen Operator mithilfe der Go-Sprache Dec 23, 2023 pm 02:52 PM

Implementieren Sie einen einfachen arithmetischen Operator mithilfe der Go-Sprache

See all articles