• ベストアンサー

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

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

  • evilu
  • お礼率28% (2/7)

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

  • ベストアンサー
  • sakuhat
  • ベストアンサー率61% (11/18)
回答No.7

>if(s.Equals('.')) >の部分で、コンパイルすると、));にしろとのエラーメッセージが出るのですが、なぜなんでしょうか? 多分、私の書いた部分をそのままコピペしているため ifの前に全角の空白が入っているんだと思います。 (掲示板だとTabが無効になるので代わりに全角空白を使いました)

evilu
質問者

お礼

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

その他の回答 (6)

  • sakuhat
  • ベストアンサー率61% (11/18)
回答No.6

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
質問者

補足

ご回答ありがとうございます。 if(s.Equals('.')) の部分で、コンパイルすると、));にしろとのエラーメッセージが出るのですが、なぜなんでしょうか? if(flg == 0) { if(textBoxResult.Text == "") { textBoxResult.Text = textBoxResult.Text + "0."; flg = 1; } else { textBoxResult.Text = textBoxResult.Text + "."; flg = 1; } } 現在の小数点キー部のソースはこのようになっております。 このキーを押した際に、小数点が表示されているか 否かを見に行き、処理をしたいのです。 まだ回答を募集していますので。 宜しくお願いします。

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.5

#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
質問者

お礼

おかげさまで、小数点の処理が完成しました。 ありがとうございました。 また機会がありましたら、宜しくお願いします。

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.4

#2です。 では、これでいけますね。 少数点、もしくは= が押されたらフラグを立てる フラグが立っている間は、それ以降の少数点は無視 演算子が押されたら、フラグを解除

evilu
質問者

補足

ありがとうございます。 フラグでやる方法は試したのですが、それで一応の処理はできるのです。 しかし、5÷3=としたときに、計算結果が少数になりますよね? その結果に小数点が打ててしまうのです。 これはエラーになりますので回避したいのです。 ので、電卓の表示部に小数点があるかないかを 参照するという方法が知りたいのです。 知ってる方おられましたら、お願いします。

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.3

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

evilu
質問者

補足

windows付属の電卓と同じ仕様にしたいです。

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.2

演算子が登場するまでに少数点は1個しか表示させないようにする、いわゆる2回目以降は無視するようにすればよいと思います。 少数点が押されたらフラグを立てる フラグが立っている間は、それ以降の少数点は無視 演算子が押されたら、フラグを解除 これでどうでしょうか。

evilu
質問者

補足

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

  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.1

こんにちは、じゃんぬねっと と申します。  ・一度押された時点でフラグを儲ける。  ・毎回、電卓の Text 部を見に行く。 で判断できるかと。

evilu
質問者

補足

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

関連するQ&A

  • 電卓プログラムについて(VC++)

    プログラミング経験ほとんどゼロで電卓プログラムを作ることになって、 現在いろいろと調べながら悪戦苦闘しているところです。 一点だけわからない点があるので質問させていただきます。 http://vcpp.seesaa.net/category/3783110-1.htmlのサイトを参考にしながら 電卓を作成しているのですが、ー(マイナス)ボタンの実装で ans =ans - now; now=0; とするとansがマイナスの値となってしまいうまくいきません。 どのようにすればよいでしょうか?

  • VBA電卓について

    こんにちは、VBA初心者です。 計算機(電卓)をつくっているのですが、 小数点を入力させる仕組みにしたいのですが、 どうのようにしたら良いのでしょうか? 変数はLONGにしているので、小数点(.)はSTRINGに なってしましいうまくいきません。 お手数ですがよろしくお願いします。

  • 四則演算のみの電卓まjavaプログラム

    四則演算のみの簡易電卓javaプログラムがわかりません。 数字・クリア・イコールはすべてボタンで表されている、 よくあるタイプの電卓です。 ネット上で探しましたが、ありそうで見つかりませんでした。記述をお願い致します。

  • 切捨てのできる電卓

    例えば、計算の結果が小数点第3位以下で切り捨てできるような電卓を探すには、ラウンドセレクターと小数点セレクターが付いた電卓を買えばいいのでしょうか。 2,000円までであるでしょうか。 できるだけ安いのがいいのですが、具体的なメーカーや型番をご存知なら教えて欲しいです。 よろしくお願いします。

  • 電卓プログラムを作りたい。

    わたしは、プログラムの初心者なのですが、力不足でプログラムが作れないのでご協力おねがいします。 データをすべて整数で演算子は、1個だけ用い、標準入力を受け取り、リターンキーが押されると、その解答を標準出力に表示するような、加減乗除の四則演算と整数剰余の演算を繰り返し行うことが可能な電卓プログラムを作りたいのですが、、、。

  • 電卓マスター(電卓に詳しい人)、電卓について教えて

    電卓マスター(電卓に詳しい人)、電卓について教えてください。 電卓で=を押して、合計が2と表示されたとします。 で、そこから10÷(合計の)2の答えを出したいです。どうすればいいですか? いま表示されている数字を割る母数じゃなくて、割られる方に持ってきたいのです。 いまは2ですが、小数点が2.467634とかになったら覚えてられないので、紙に書いて、クリアして母数を打って、メモ帳の数字を打って割ってます。 なんか電卓だけで出来ないものでしょうか。紙を使うのが悔しいです。

  • 電卓で分数

    分数電卓はありますが、ふつうの電卓で小数の計算結果を分数にする方法はありますか? たとえば、19÷3とやると、6.33333・・・となります。分数であらわすと、6と1/3です。 例は簡単な小数なので分数であらわすことができましたが、もっと複雑な小数の場合は、頭のなかで分数に変換できません。 なにか分数であらわす方法がありましたら、教えてください。あったらで結構です。

  • C言語で電卓を作成する。修正お願いします。

    以下のプログラムは電卓のプログラムです。 http://codepad.org/n47BkpXa このプログラムの変数の宣言はあえてint型で行っています。 コレを変えずに上手く計算結果が出せるようにしたいのですが、どこを修正すれ良いですか? ご指導お願いします。 ・問題点 例:10/4*4などの最初に割り算が入ると計算結果がおかしくなってしまいます。 10/4*4=8 int型なので小数点が切り捨てられて結果が8になってしまいます。 コレをint型を使用して10になるようにしたいのですがご指導お願いします。 多分イメージではif文で(op=/)&&(op+1=*)が出たら掛け算を始めにするとかだと思います。

  • 1兆✕0.7%=が押せる電卓ソフト

    1兆✕0.7%=が直接打てる電卓ソフトはないでしょうか? ・兆のキーがある。 もしくは、 ・0を押していくと億、兆が表示される。 操作はどのようなものでもかまいません。 「漢数電卓」というソフトを使っていますが、小数点キー、%キーがないのです。

  • VB.netで電卓プログラム作成

    VB.netの勉強中で電卓プログラム作成を行っています。 皆様に教えて頂きたいのは、たとえば0,1,2,3,4,5,6,7,8,9と ボタンでキーを作ったとします。 プログラムの中でどのボタンが押されたかどうかが判る関数や、宣言の方法がありますか? もしくはTEMPなどの引数をつくり、+-・x=が押されるまで、 数値を記憶させる方法はどの様な手段がありますか? ヒントになる様なレベルで構いませんので回答頂けますよう よろしくお願いいたします。

専門家に質問してみよう