質問です。

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

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

このQ&Aに関連する最新のQ&A

A 回答 (7件)

>if(s.Equals('.'))


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

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

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

また機会がありましたら、宜しくお願いします。

お礼日時:2005/04/14 14:20

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に小数点が含まれていません。");

といった感じでしょうか。

この回答への補足

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

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
    • good
    • 0

#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個ついちゃうんですよね?
であれば、参照する意味が分かりません。

もう少し仕様を洗い出してもらえますか?
    • good
    • 0
この回答へのお礼

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

また機会がありましたら、宜しくお願いします。

お礼日時:2005/04/14 14:22

#2です。



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

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

この回答への補足

ありがとうございます。

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

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

知ってる方おられましたら、お願いします。

補足日時:2005/04/13 12:38
    • good
    • 0

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



どのような電卓を作りたいのでしょうか?

この回答への補足

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

補足日時:2005/04/13 09:04
    • good
    • 1

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



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

これでどうでしょうか。

この回答への補足

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

補足日時:2005/04/12 08:47
    • good
    • 0

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



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

で判断できるかと。

この回答への補足

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

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

宜しくお願い致します。

補足日時:2005/04/11 15:05
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q試験で使う電卓メーカー

こんにちは。
来年会計士試験を受ける予定です。
専門学校の先生が、試験の時に使う電卓のメーカーはシャープかカシオを使え。と言っていたそうです。
友達から聞きました。
今私は無印良品の電卓なんですが、買い直した方がいいですか?
3級も2級もこの電卓でとったので愛着もあるし、恐らくメーカーものとはキーの配置が違うので変えるなら早めじゃないといけません。

どなたかご教示お願いしますm(_ _)m

Aベストアンサー

会計士試験の受験要領に使用可能な電卓の条件が定められております。それをクリアした電卓であれば、買い換える必要は有りません。

参考までに次のサイトを閲覧した下さい。
[やっとく?公認会計士試験HP どのような電卓を購入すべきですか?]
http://www.yaxtutoku.com/cpa/faq/exam_q08.html
[やっとく?公認会計士試験HP おすすめの電卓は?]
http://www.yaxtutoku.com/cpa/vote/votec.cgi?no=2

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

プログラミング経験ほとんどゼロで電卓プログラムを作ることになって、
現在いろいろと調べながら悪戦苦闘しているところです。
一点だけわからない点があるので質問させていただきます。

http://vcpp.seesaa.net/category/3783110-1.htmlのサイトを参考にしながら
電卓を作成しているのですが、ー(マイナス)ボタンの実装で

ans =ans - now;
now=0;

とするとansがマイナスの値となってしまいうまくいきません。
どのようにすればよいでしょうか?

Aベストアンサー

★きっと C 言語でしょうね。
>visual C++で作っているところです。
 ↑
 C言語、C++言語、C++/CLI(.NET)のどれか補足して欲しかった。
 『Visual C++』はマイクロソフト社製のコンパイラを使っているのはタイトルから
 分かりますよ。使っている言語です。補足して欲しかったのは言語のタイプ。
・C、C++、C++/CLIの区別が付いていないのなら C 言語を始めたばかりで電卓を
 作ろうとしているのでしょうかね。
 あと電卓は GUI(ウインドウが出るタイプ)ですか?
 電卓のアルゴリズムの問題ですので、最初はコマンド・プロンプトタイプで作成して
 から GUI に組み込むようにしてみてはどうですか?
 コマンドライン上でも電卓が作れなければ GUI 電卓は無理ですからね。
>変数についてですが、
>ansは最終的な答え用です。
>nowは現在入力した数値です。
 ↑
 変数名から想像は付きます。
 補足して欲しかったのは ans、now 以外に電卓で使用する変数です。
 ans、now だけでは電卓は作れない気がしますので。
 最初に載せた電卓の構造体のようなものは定義していますか?
 定義しているのなら変数名とその意味を補足して欲しいのです。
>要領を得ない質問で申し訳ありませんでした。
 ↑
 C 言語の初心者さんですか?
 Windows プログラムの初心者さんですか?
 どの程度の何を理解していますか?
・とりあえずこの『回答への補足』と『回答へのお礼』にソースを貼り付けて下さい。
 それからアドバイスしますよ。
・以上。→文字数が足りない場合は省略しないで貼り付けられる部分だけで良いです。

★きっと C 言語でしょうね。
>visual C++で作っているところです。
 ↑
 C言語、C++言語、C++/CLI(.NET)のどれか補足して欲しかった。
 『Visual C++』はマイクロソフト社製のコンパイラを使っているのはタイトルから
 分かりますよ。使っている言語です。補足して欲しかったのは言語のタイプ。
・C、C++、C++/CLIの区別が付いていないのなら C 言語を始めたばかりで電卓を
 作ろうとしているのでしょうかね。
 あと電卓は GUI(ウインドウが出るタイプ)ですか?
 電卓のアルゴリズムの問題ですの...続きを読む

Q大学で使うおすすめの関数電卓を教えて下さい。

大学で関数電卓を使うようになったのでおすすめの関数電卓を教えて下さい。予算は5000円前後です。出来るだけいろんな機能の付いたディスプレイが大きい関数電卓がいいです。ちなみに自分は工学部電気工学科です。よろしくお願いします。

Aベストアンサー

関数電卓セレクトガイド
http://teamcoil.sp.u-tokai.ac.jp/classes/Calculator/index.htm

紹介されている機種は最新かどうかわかりませんが,
選び方は参考になると思います.

Q簡単な電卓プログラムについて

今C言語をやっているのですがまだ始めたばかりで全然わかっていない者です。
なるべく簡単な構文で電卓のプログラムを作りたいのですがそのソースを教えてくださいませんか?

東方C++2008を使っております

よろしくおねがいします。

Aベストアンサー

すっごく省略してるので、変な式を入れないでください。
#include <stdio.h>
#include <stdlib.h>

char buffer[1024]; // とりあえず、間に合うでしょう。
char *ptr;

int isdlim(char c){
if((c=='*')||(c=='/')||(c=='+')||(c=='-')) return 1;
if(c=='\0') return 1;
return 0;
}

char *skip(){
if( *ptr == '\0' ) return NULL;
while( !isdlim(*ptr) ) ptr++;
if(*ptr == '\0') return NULL;
return ptr;
}
double kou(){
double ans;
char *tmp;

ans = atof(ptr) ;
while( tmp = ptr, skip() != NULL ){
switch (*ptr ++){
case '*':ans *= atof(ptr);break;
case '/':ans /= atof(ptr);break;
default:ptr = tmp;
return ans;
}
}
return ans;
}
double shiki(){
long double ans;

ans = kou();
while( skip() != NULL ){
switch (*ptr++){
case '+':ans += kou();break;
case '-':ans -= kou();break;
default:return ans;
}
}
return ans;
}
int main(){
int i,bracket;

fprintf(stdout,"Input > ");
scanf("%s",&buffer);
ptr = buffer;
printf(" Ans = %f\n",shiki());
return 0;
}

すっごく省略してるので、変な式を入れないでください。
#include <stdio.h>
#include <stdlib.h>

char buffer[1024]; // とりあえず、間に合うでしょう。
char *ptr;

int isdlim(char c){
if((c=='*')||(c=='/')||(c=='+')||(c=='-')) return 1;
if(c=='\0') return 1;
return 0;
}

char *skip(){
if( *ptr == '\0' ) return NULL;
while( !isdlim(*ptr) ) ptr++;
if(*ptr == '\0') return NULL;
return ptr;
}
double kou(){
double ans;
char *tmp;

ans = atof(ptr) ;
while( tmp = ptr, skip() != NULL )...続きを読む

Qいつも持ち歩く電卓でこれがよいというメーカーさんのものありましたら教えてください。

カテゴリーが違うかもしれないのですが。

1)いつも持ち歩く電卓でこれがよいというメーカーさんのものありましたら教えてください。
今、つかいなれているもので、カシオさんの
NS-10LTというのを持ち歩いているんですが。

2)また卓上型(大型)電卓のものでこれは便利というのがありましたらば、これも教えてください。

Aベストアンサー

 私は卓上型を普段持ち歩いてしまってます^^;

 経験上、普段使い慣れてるものが一番良いと思います。

 ちなみに私はCACIOのDS-10LTと言う機種を4年使いつづけています。

Q浮動小数点演算を固定小数点演算へ変換する

あるプログラムの処理を高速化するために浮動小数点数を固定小数点数に変換したいので、皆様の力を貸してください。

以下のようなプログラムがあります。
-------------------------------------------------------------
#define A 0.105

int main(){
double y;
double a,b;
double t1,t2

t1 = A * a;
t2 = t1 * t1;
y = t2 * b;
printf("y = %lf\n",y);
return 0;
}
-------------------------------------------------------------
a,bが入力でそれぞれ0~6000,0~0.004の値を取ることが分かっています。また、yは出力であり許容誤差は3以下となっています。

上記のプログラムを固定小数点数で記述しなおすとどのようになりますか。
各変数の型はshortでお願いします。

あるプログラムの処理を高速化するために浮動小数点数を固定小数点数に変換したいので、皆様の力を貸してください。

以下のようなプログラムがあります。
-------------------------------------------------------------
#define A 0.105

int main(){
double y;
double a,b;
double t1,t2

t1 = A * a;
t2 = t1 * t1;
y = t2 * b;
printf("y = %lf\n",y);
return 0;
}
-------------------------------------------------------------
a,bが入力でそれぞれ0~6000,0~0.00...続きを読む

Aベストアンサー

結論から言うと、16ビット整数型演算の範囲ではご希望の「許容誤差は3以下」は実現できないのではないかと思います。
というのは、kを適当な係数として、途中でどうしても (ka)^2 の計算をせざるを得ないからです。(ka)^2 を16ビット整数の範囲に収めるには、符号なしとしてもkaの値は0~255の整数である必要があります。kaの値が256通りしか取れないので、a=5977の場合とa=6000の場合を区別できなくなります。b=0.004のとき、浮動小数点演算のまま本来の値を計算すると
* a=5977 ならば y=1575.45…
* a=6000 ならば y=1587.6
ですから、この2つの場合の結果が同じ値になってしまうということは誤差が3を越えるということです。

ところで、bの値の有効桁数は?
また、結果が負になることはないはずなのに「符号はありで」と書かれているのはどうしてでしょうか?

Qおすすめ電卓教えてください

税理士の資格をとろうとおもっています。
使いやすいおすすめの電卓を教えてください。
(押しやすく音が静かで試験にも持っていけそうなのが良いです。)
よろしくお願いいたします。

Aベストアンサー

#2です。
私が使っているのはEL-339Mというもので1,980円で買いました。

ただこれは結構デカイです。おおよそ横14cm×縦18cmです。あとキ-も硬質プラスチックなので少し音がします。でも
・乱打する必要がある
・手がデカイ
・手先が器用でなく小回りな動きが苦手
という理由でこれにしてます。

同じ型で一回り小さい(一般的な大きさ)でキ-も軟質プラで音のほとんどならないものがあるのですが型番はちょっとわかりません。すみません。

関係ないですが、100円ショップなどで売っている家具の裏などに傷防止の為に貼り付ける薄いコルクを買ってきて1cm四方に切って、電卓の裏のディスプレイ側の角に張ると、張る位置によって微妙に傾きの調整ができて場合によっては使いやすくなり、またキ-を叩いた時に机との間で生じる音なども吸収できたりして結構便利です。好みによりますので機会があれば試してみてください。

Q浮動小数点の小数点3桁を。。。

宜しくお願いします。C言語を使い三角関数の計算を行っております。小数点3位以下は四捨五入にしたいのですが、そのような関数が有りますでしょうか?
環境はQuickC(MSDOS)です。
もしなければ文字列にでも変換し直して行うのでしょうか?一般的な方法など御在ましたらお教え下さい。
宜しくお願いします。

Aベストアンサー

負の数の対応は必要ですか?
負の場合の四捨五入の定義は「絶対値の四捨五入に符号を付加」でいいですか?

「絶対値の四捨五入に符号を付加」でオッケーなら、#1,#2,#3の回答に符号処理の処理を加えてください。

Qおすすめの関数電卓

おすすめの関数電卓を教えてください。

そんなに難しい計算をするわけではないのでいろんな機能が付いていなくてもいいのですが、理想としては、間違って入力したものを削除したり前に戻ったりできるもの、比較的小型のものがいいです。
ヤマダ電機に売ってればいいのですが。
予算は2,000円ぐらいと考えてます。

回答よろしくお願いします。

Aベストアンサー

20年ほど前は、関数電卓は高価で、安いものでも8,000円くらいはしたものです。
私は、学生の頃それくらいの値段で買った関数電卓が、調子が悪くなっても捨てられず、
とうとう電源が入らなくなった時点で、やむを得ず大金をはたいて買わざるを得ないと
腹をくくって店に行ってみると、
1,000円や2,000円の関数電卓がズラズラ並んでいて、驚いたものでした。

関数電卓のお奨めを教えてくれ、なんて、
私のように、関数電卓はかつてのまま高価なものなのだと勘違いしているので、
変なものを買って後悔したくないから慎重になっているのだろう、と思ったのですが、
予算2,000円なんですね。

私は、カシオのfx-373ESという機種を使っています。
こういうのは、1年やそこらで後継機種に入れ替わっていくので、同じものはもう
店頭にないかもしれませんが、
ざっくり言えば、カシオの2,000円くらいのものを選んでおけば間違いない、と言えるでしょう。
Deleteボタンがあり、4方向カーソルが付いたものなら、お望みの消す。戻るもできます。

Q小数点つきの数値を文字列として読み込み、浮動小数点数値として出力

タイトルの通りです。
小数点以下は6桁までです。
ヒントでいいんで教えてもらえるとありがたいです。
よろしくおねがいします。

Aベストアンサー

入力の方は回答が出てるようなので、
出力の方を。

小数点以下を6桁にしたいんですよね。
printfで%.6fとかやるといいと思います。
ご存じかもしれませんが、
ファイルに出したいならfprintf、
文字列にしたいだけならsprintf、
です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報