C言語で電卓を作ろう

C言語で簡単な数式を読んで計算するプログラムを作ります。

数式内で使える演算子は「+」「-」「*」の3つで、括弧は使えません。

使える数は0以上の整数で、負の数は使えません。

 

優先順位は「*」が高く、「+」と「-」が低くなるようにします。「2 + 3 * 4」は 20 ではなく 14 になります。

 

3つの変数 a、b、c を用意し、a と c を 0、b を 1 で初期化しておきます。

受け取った数式を最初から順番に読んでいって、「*」があったら b に a をかけ、「+」「-」があったら c に a * b を足します。これらの演算子を読んだ後、a に 0 を代入し、bに「+」なら 1、「-」なら -1 を代入します。数字を読み込んだ場合は a に 10 をかけて足します。

 

これを文字列の終わりまで繰り返したら、a * b + c が計算の答えです。

 

コードはこちら

github.com

 

+と-と*しか無いからこそ実現できるシンプルさです。

でも変数を1つ増やせば「/」も追加できないことはなさそう。

ただ、括弧を使いたいときにこのやり方は使えないので他のやり方を考える必要があります。