●簡単な計算機作成問題
現在以下の問題が解けずに苦しんでいます。
お力添えお願い致します。
問題点
・一応エラーにはならず動作はします。
・「3」→「+」→「5」→「-」
この-の段階で計算が実行されてしまい、rasultの中身が8になって欲しいのに-2になってしまう。
・「5」→「=」
resultが5になるべきなのに0になってしまう。
すごい初歩的なロジックで悩んでしまっているのですが、なかなか抜け出せなくなってしまっているの
で助言をお願いしたいです。よろしくお願い致します。
<問題>
- or - 演算子を利用して、入力された演算子に沿った計算を行うようにし、
演算子の入力ごとに現在の値が表示されるようにしてください。
また、= が入力された場合は計算結果が表示されて処理を終了させます。
入力の順番は原則 数値 -> 演算子 -> 数値 -> 演算子… となります。
数値の入力時には数字以外の入力を受け付けないようにチェックして数値以外の場合は再度数値入力を求めるようにしましょう。
ctype_digit()関数を利用することで数値かどうかをチェックすることが可能です。
また、演算子の入力受付時に該当しないキーが入力された場合も再度、演算子の入力を求めるようにしましょう。
表示例 数値を入力してください。 3 (←入力値) 演算子を入力してください。 +:足し算 -:引き算 =:終了 + (←入力値) 計: 3 数値を入力してください。 hello 数値以外が入力されました。 数値を入力してください。 5 (←入力値) 演算子を入力してください。 +:足し算 -:引き算 =:終了 - (←入力値) 計: 8 数値を入力してください。 4 (←入力値) 演算子を入力してください。 +:足し算 -:引き算 =:終了 = (←入力値) 計算結果は 4 です。
PHP
1 2$result=0; 3 4 5while (true){ 6 while (true) { 7 echo "数値を入力してください。\n"; 8 $value=trim(fgets(STDIN)); 9 if(ctype_digit($value)){ 10 break; 11 } 12 else{ 13 echo "数値以外が検出されました。\n"; 14 } 15 } 16 17 while(true){ 18 echo"演算子を入力してください。\n 19 +:足し算 -:引き算 =:終了\n"; 20 $value2=trim(fgets(STDIN)); 21 if($value2==="+"||$value2==="-"||$value2==="="){ 22 break; 23 } 24 } 25 26 if($value2==="+"){ 27 $result+=$value; 28 echo "計:".$result,"\n"; 29 } 30 else if($value2==="-"){ 31 $result-=$value; 32 echo "計:".$result,"\n"; 33 } 34 35 else if($value2==="="){ 36 echo "計算結果は".$result."です。\n"; 37 break; 38 } 39}
回答1件
あなたの回答
tips
プレビュー