• ベストアンサー
  • 暇なときにでも

C#で電卓のプログラムを組んでいるのですが

  • 質問No.1324236
  • 閲覧数6042
  • ありがとう数4
  • 回答数7

お礼率 28% (2/7)

質問です。

電卓のプログラムにおいて、小数点のボタンがありますよね。それを重複して入力されないようにしたいのですが。何か良い方法はないでしょうか?

よろしくお願い致します。

質問者が選んだベストアンサー

  • 回答No.7
  • ベストアンサー

ベストアンサー率 61% (11/18)

>if(s.Equals('.'))
>の部分で、コンパイルすると、));にしろとのエラーメッセージが出るのですが、なぜなんでしょうか?

多分、私の書いた部分をそのままコピペしているため
ifの前に全角の空白が入っているんだと思います。
(掲示板だとTabが無効になるので代わりに全角空白を使いました)
お礼コメント
evilu

お礼率 28% (2/7)

空白を消去しましたら、正常にコンパイルすることが
できました。
期待通りのプログラムを組むことが出来ました。
ありがとうございました。

また機会がありましたら、宜しくお願いします。
投稿日時:2005/04/14 14:20

その他の回答 (全6件)

  • 回答No.6

ベストアンサー率 61% (11/18)

Windows電卓の仕様ならiiikkkさんの方法でいいと思います。


小数点があるか調べるなら

string str = textBox1.Text;
bool flg = false;

foreach(char s in str)
{
 if(s.Equals('.'))
 {
  flg = true;
  break;
 }
}

if(flg)
 Console.WriteLine("textBox1に小数点が含まれています。");
else
 Console.WriteLine("textBox1に小数点が含まれていません。");

といった感じでしょうか。
補足コメント
evilu

お礼率 28% (2/7)

ご回答ありがとうございます。

if(s.Equals('.'))
の部分で、コンパイルすると、));にしろとのエラーメッセージが出るのですが、なぜなんでしょうか?

if(flg == 0)
{
if(textBoxResult.Text == "")
{
textBoxResult.Text = textBoxResult.Text + "0.";
flg = 1;
}
else
{
textBoxResult.Text = textBoxResult.Text + ".";
flg = 1;
}
}

現在の小数点キー部のソースはこのようになっております。
このキーを押した際に、小数点が表示されているか
否かを見に行き、処理をしたいのです。

まだ回答を募集していますので。
宜しくお願いします。
投稿日時:2005/04/14 10:54
  • 回答No.5

ベストアンサー率 37% (92/247)

#2です。

>その結果に小数点が打ててしまうのです。
ここの仕様がいまいち分かりません。
Windows付属の電卓は、演算子の後の数字でテキスト部をクリアしてますよね。
その感覚で回答しているつもりです。
また、ボタンクリックイベント時に変数にセットしていけば、表示部を見る必要もありません。

下記例だと、
5.0÷3.0=1.667 +10.0=

[5]クリック→[.]クリック&フラグON(これ以降カンマは無視)→[0]クリック
→[÷]クリック&フラグOFF(これ以降はカンマ有効)
→[3]クリック→[.]クリック&フラグON(これ以降カンマは無視)→[0]クリック
→[=]クリック
1.6667と計算結果表示
→[+]クリック&フラグOFF(これ以降はカンマ有効)
→[1][0]クリック→[.]クリック&フラグON(これ以降カンマは無視)→[0]クリック
→[=]クリック

となります。


>ので、電卓の表示部に小数点があるかないかを
>参照するという方法が知りたいのです。
ここに表示する部分でカンマは2個ついちゃうんですよね?
であれば、参照する意味が分かりません。

もう少し仕様を洗い出してもらえますか?
お礼コメント
evilu

お礼率 28% (2/7)

おかげさまで、小数点の処理が完成しました。
ありがとうございました。

また機会がありましたら、宜しくお願いします。
投稿日時:2005/04/14 14:22
  • 回答No.4

ベストアンサー率 37% (92/247)

#2です。

では、これでいけますね。

少数点、もしくは= が押されたらフラグを立てる
フラグが立っている間は、それ以降の少数点は無視
演算子が押されたら、フラグを解除
補足コメント
evilu

お礼率 28% (2/7)

ありがとうございます。

フラグでやる方法は試したのですが、それで一応の処理はできるのです。
しかし、5÷3=としたときに、計算結果が少数になりますよね?
その結果に小数点が打ててしまうのです。
これはエラーになりますので回避したいのです。

ので、電卓の表示部に小数点があるかないかを
参照するという方法が知りたいのです。

知ってる方おられましたら、お願いします。
投稿日時:2005/04/13 12:38
  • 回答No.3

ベストアンサー率 37% (92/247)

Windowsに標準でついている電卓をイメージしていたのですが、仕様が良く分かりません。

どのような電卓を作りたいのでしょうか?
補足コメント
evilu

お礼率 28% (2/7)

windows付属の電卓と同じ仕様にしたいです。
投稿日時:2005/04/13 09:04
  • 回答No.2

ベストアンサー率 37% (92/247)

演算子が登場するまでに少数点は1個しか表示させないようにする、いわゆる2回目以降は無視するようにすればよいと思います。

少数点が押されたらフラグを立てる
フラグが立っている間は、それ以降の少数点は無視
演算子が押されたら、フラグを解除

これでどうでしょうか。
補足コメント
evilu

お礼率 28% (2/7)

ご回答ありがとうございます。
フラグは立ててみたものの、割り算の処理を
行った際に、小数点が出る場合がありますよね?
その際に出た計算結果にも小数点が打ててしまうのです。=を押した際にフラグを立てますと、
それ以降に入力した数字に小数点が打てなくなりますし、それを回避するにはやはり、text部を見に行き、
判断するようにしたいなと、思ったのですが。
なにしろ、書き方が分かりません。。
ので、その点についてご教示願いたいです。
よろしくです。
投稿日時:2005/04/12 08:47
  • 回答No.1

ベストアンサー率 48% (100/208)

こんにちは、じゃんぬねっと と申します。

 ・一度押された時点でフラグを儲ける。
 ・毎回、電卓の Text 部を見に行く。

で判断できるかと。
補足コメント
evilu

お礼率 28% (2/7)

回答ありがとうございます。
フラグを立てて試してみたのですが、0.3+1=1.3
としたときに、フラグを立てたままですと、少数点が
打てなくなります。ので、計算結果を表示するのと同時にフラグを初期化しました。すると、その状態で少数点を打つと、2重に打たれた状態になりました。また、1/xキーで0.11~にした後も、小数点が2重になります。フラグを立てる以外の方法がありましたら、お教え願いたいので宜しくお願いします。

あと、TEXT部を見に行くというのは、具体的にどのように記述すればよろしいのでしょうか?

宜しくお願い致します。
投稿日時:2005/04/11 15:05
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ