ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルを使用した四則計算の計算

PHP_PHP チュートリアルを使用した四則計算の計算

WBOY
WBOYオリジナル
2016-07-13 17:44:50888ブラウズ

質問要件: 四則演算を含む文字列式があります。四則演算の結果を計算する関数を作成してください

PHP 実装:

1

2

3 /**

4 * 四則演算を計算します

5*/

6

7 エラー報告(E_ALL);

8

9 $exp = '(1+2*(3+5)/4)*(3+(5-4)*2)';

10 $arr_exp = 配列();

11

12 for($i=0;$i

13 $arr_exp[] = $exp[$i];

14}

15 $result = calcexp( array_reverse($arr_exp) );

16 $exp .$result;

17

18 関数 calcexp( $exp ){

19 $arr_n = 配列();

20 $arr_op = 配列();

21

22 while( ($s = array_pop( $exp )) != '' ){

23 if( $s == '('){

24 $temp = 配列(); $quote = 0;

25 while( ($t = array_pop($exp)) != '' ){

26 if( $t == '('){

27 $quote++;

28 }

29

30 $endquote++;

32

32 休憩;

33 }

34 }

35 array_push($temp, $t);

36 }

37 $temp = array_reverse($temp);

38 array_push($arr_n, calcexp($temp) );

39 }else if( $s == '*' || $s == '/' ){

40 $n2 = array_pop($exp);

41 if( $n2 == '('){

42 $temp = array(); $endquote = 0;

43 while( ($t = array_pop($exp)) != '' ){

45

45 $quote++;

46 }

47

48 $endquote++;

50

50休憩;

51 }

52 array_push($temp, $t);

53 }

54 $temp = array_reverse($temp);

55 $n2 = calcexp($temp);

56 }

57

58 $op = $s;

59 $n1 = array_pop($arr_n);

60

61 $result = 操作($n1, $op, $n2);

62 array_push($arr_n, $result);

63 }elseif( $s == '+' || $s == '-' ){

64 array_push($arr_op, $s);

65 }その他{

66 array_push($arr_n, $s);

67 }

68 }

69

70 $n2 = array_pop($arr_n);

71 while( ($op = array_pop($arr_op)) != '' ){

72 $n1 = array_pop($arr_n);

73 $n2 = 操作($n1, $op, $n2);

74 }

75

76 $n2 を返します;

77 }

78

79 関数演算( $n1, $op, $n2 ){

80 スイッチ ($op) {

81 ケース '+':

82 return intval($n1) + intval($n2);

83 休憩;

84 ケース '-':

85 return intval($n1) - intval($n2);

86 休憩;

87 ケース '*':

88 return intval($n1) * intval($n2);

89 休憩;

90 ケース '/':

91 return intval($n1) / intval($n2);

92 休憩;

93 }

94 }

 

 

 

この実現方法では、数字を保存するための 2 つのスタックと、計算記号を保存するための 2 つが使用され、その後に括弧内に到達する、点笨失、後面を充満する「逆波兰表式」の計算法が使用されます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478722.html技術記事要求項目: 四乗算の文字列表式、编写一関数、四乗算の結果 PHP实现: 1 ?php 2 3 /**4 * 四則演算を計算する 5*/ 6 7 er...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。