16進電卓を作ってみよう5

   2012/05/08

えてして、人間に分かりやすい(あるいは慣れている)方式は
プログラム化しようとすると面倒なものです。

毎度、当サイト管理人イガジーです。

演算処理のひとつに、「逆ポーランド」というのがありまして
普通の人にはあまり馴染みがないのですが、プログラムするには
やりやすい方式です。(興味がある方は検索してみてください)

それはともかく、電卓の演算処理を考えてみます。
1+2= という操作が行われたら、[+], [=] キー(ボタン)は
どういう処理をすればよいでしょうか?
同様に、4−1= という操作が行われたら、[-], [=] キーは?

1+ の[+]では、1(直前の入力数値)を覚えておき、
4− の[-]では、4を覚えておけば良いでしょうね。
では、[=]は?

直前の数値(2や1)と演算する、、、のですけれど、
その前に[+]が押されたのか、[-]が押されていたのか、を
覚えておく必要がありそうです。ちょっと面倒ですが。
そうしないと、足し算すりゃいいのか、引き算するのか、わからない。

という訳で、新たな変数として
int val1 … 最初の数字([+]や[-]が押される直前の数字)を格納しておく

int stat … 足し算か引き算かを覚えておく
を用意しましょう。

足し算キー(ボタン)では

val1=result; // resultは直前の数値
stat=1; // 1は足し算ということにする
result=0;

引き算キー(ボタン)では

val1=result; // resultは直前の数値
stat=2; // 2は引き算ということにする
result=0;

という処理をすればよさそうです。

では、[=]キー(ボタン)は?

if (stat==ADD) {
	result=val1+result;
}else if (stat==SUB) {
	result=val1-result;
}
stat=0; // 足し算でも引き算でもない
display();

で良い、か、な?

という訳でぜひともご自分で試してみてください。何事も経験だと思いますので。

16進電卓を作ってみよう1
16進電卓を作ってみよう2
16進電卓を作ってみよう3
16進電卓を作ってみよう4
16進電卓を作ってみよう5(this)
16進電卓を作ってみよう6
16進電卓を作ってみよう7
16進電卓を作ってみよう8
16進電卓を作ってみよう9

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)