『 The 祭り 』関連 :
通り* さんの電卓アプリの作品を紹介します。
プログラムソースはこちら ( Visual C# 2005 )
実行時の画面イメージ:
確認させていただきましたが、非常によく出来てます。
参考にさせてもらいます。^o^;
以下 製作者のコメントです。
★仕様
・満たしているのは次の7項目のつもりです。
…1(画面), 2(数字ボタン), 3(+ボタン), 5(=で計算), 6(Cでクリア),
18(優先順位), 22(コピー)
・次の追加仕様があります。
・"=="、"*="、"=*" などに対応しました。
この場合[]の部分が補われるようなイメージで計算します。
・1+2== → 1+2[+2]=
・1+2*3*= → 1+2*3*[2*3]= ※Windowsの電卓とは異なります。
・1+2=*3= → [(]1+2[)]*3=
・小数計算はできません。10/3は3です。
★アピール
・計算中の表示内容など、Windowsの関数電卓を目指しました。
・計算はToyCalcクラスが行います。
画面がなくてもこんな風にも使えます。
ToyCalc calc = new ToyCalc();
calc.Push(ToyCalcButtons.One);
calc.Push(ToyCalcButtons.Add);
calc.Push(ToyCalcButtons.Two);
MessageBox.Show(string.Format("1+2=", calc.Result));
・計算結果はバインディングを利用して表示しています。
★反省点
・逆ポーランド使わないとダメですね。
・夜更かしはいけませんね。
・ボタンは動かないとね。
★検証した計算式
・1+2= →3
・1+2+3+4+5= →15
・1+2+3-4+5= →7
・2*3= →6
・10/3= →3
・1+2*3= →7
・1+2*3+4= →11
・2*3*4= →24
・2*3*4+2*3*4= →48
・1+2*3*4+5+6*7*8-9= →357
・1+2*3*4+5+6*7/8-9= →26
・-1= →-1
・-1-2*3= →-7
・1== →1
・10+5=== →25
・1*10=== →1000
・1+2*3== →13
・1+2=*3= →9
・1+2+3*4-5=/4+2=== →8
・1+2、CE、3= →4
・1/0= →ゼロ除算エラー
・MaxValue+1= →オーバーフロー
・MinValue-1= →オーバーフロー
・2*3*= →36
・2*3*=*== →46656
・2+3*= →11(Windows非互換)
・1+2*3*=*== →531441(Windows非互換)
・1+2*3*1=*== →343
・2**/*3= →6
・5+-67= →-62
・5-+67= →72
・1+2*3*+4= →11
・1+2*3+*4= →28
引き続き、皆様のご参加をお待ち申し上げております。