前提・実現したいこと
現在、ターミナル上で実行できる計算プログラムの作成をしています。
しかし、1個の演算子を使った計算プログラムはうまくいったのですが、2個以上の演算子が含まれている複合算の計算結果がうまくいきません。
複合算で、左から順番に計算していき(+,-,*,/の四則演算)、左側の計算結果に順次右側の計算を追加?するプログラムを作成したいと考えています。
例
入力:2+3*4=
結果:20
入力:4+7*2-4/6=
結果:3
発生している問題・エラーメッセージ
現在のコードでは、演算子前後の計算をそれぞれ行うため2個以上の演算子が含まれた場合、計算結果がうまく表示されません。
例
入力:2+3+4=
結果:57
入力:2+5*3=
結果:715
該当のソースコード
$z配列にはユーザーが入力した値を追加しています。
$z = array('2','+','6','*','4','=');
のように、'数字','演算子','数字'の順番になっています。
PHP
1foreach($z as $key=> $j){ 2 if($key % 2 == 1){ 3 switch($j){ 4 case '+'; 5 $num1 = $z[$key - 1]; 6 $num2 = $z[$key + 1]; 7 $num3 = $num1 + $num2; 8 echo $num3; 9 break; 10 11 case '-'; 12 $subtraction1 = $z[$key - 1]; 13 $subtraction2 = $z[$key + 1]; 14 $subtraction3 = $subtraction1 - $subtraction2; 15 echo $subtraction3; 16 break; 17 18 case '*'; 19 $multiplication1 = $z[$key - 1]; 20 $multiplication2 = $z[$key + 1]; 21 $multiplication3 = $multiplication1 * $multiplication2; 22 echo $multiplication3; 23 break; 24 25 case '/'; 26 $division1 = $z[$key - 1]; 27 $division2 = $z[$key + 1]; 28 $division3 = $division1 / $division2; 29 echo $division3; 30 break; 31 32 } 33 34 } 35 36 }
試したこと
①最初の計算結果を配列に追加して、そこに右側の計算を順次追加していく
思いついたのはいいのですが、このようなプログラムが完成できませんでした。
②繰り返し分を使う
foreachの中に繰り返し構文を使ったことで計算結果もうまくいかず、エラーが出る場合もありました。
これ以上の処方が思いつかず、行き詰ってしまいました。
よろしければ、ご教授頂ければ幸いです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。