質問: c言語で電卓を作成する。修正お願いします。 以下のプログラムは電卓のプログラムです。 http://codepad.org/n47bkpxa このプログラムの変数の宣言はあえてint型で行っています。 コレを変えずに上手く計算結果が出せるようにしたいのですが、どこを修正すれ良いですか? ご指導お願いします。 ・問題点 例:10/4*4などの最初に割り算が入ると計算結果がおかしくなってしまいます。 10/4*4=8 int型なので小数点が切り捨てられて結果が8になってしまいます。 コレをint型を使用して10になるようにしたいのですがご指導お願いします。 多分イメージではif文で(op=/)&&(op+1=*)が出たら掛け算を始めにするとかだと思います。
回答: 計算をする前に因数の順番を入れ換えれば良いと思います。 かけ算わり算で繋がっているところを見つけ、 その部分を、かけ算がわり算よりも左側に来るように並べかえるんです。 この前処理さえしてしまえば、 計算処理をするコードを書き換える必要はなくなります。 ただこの方法でも、1 / 2 + 1 / 2のような式には対応できません。 こういった式も処理したいなら、int型整数を2つ使って分数を表現し、 分数を使って計算処理をするという方法が考えられます。