![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
C♯で電卓を作成しています。演算子を押すと何故か0が表示されてしまいます。
例として1+2を計算したいとして、1のボタンを押すと1と入力されテキストボックスに1と反映される。ここで+ボタンを押すとテキストボックスには0と表示され、そのまま2のボタンを押すと2とテキストボックスに表示され計算すると3と出る。計算は大丈夫なのだが、演算子を押すと0がテキストとして表示されてしまいます。先生からは、Input_strが演算子かみたあと、Input_strは空欄か?をみて、Input_strに入ってる値を既に入力されている値にくっつけるようにと言われていますが、いまいちプログラムにすることができません。
また、=が押されたら入力されていた数値がリセットされるようにしたいです。
ご教示よろしくお願いします
Input_str = "";
double Result = 0;
string Operator = null;
…………
private void process_Click(object sender, EventArgs e)
double num1 = Result; // 現在の結果
double num2; // 入力された文字
// 入力された文字が空欄なら、計算をスキップする
if (Input_str != "")
{
// 入力した文字を数字に変換
num2 = double.Parse(Input_str);
// 四則計算
if (Operator == "+")
Result = num1 + num2;
txtbox.Text = Result.ToString();
if (Operator == "-")
Result = num1 - num2;
txtbox.Text = Result.ToString();
if (Operator == "*")
Result = num1 * num2;
txtbox.Text = Result.ToString();
if (Operator == "/")
{
if (num2 == 0)
{
txtbox.Text = “ 0 で割ることはできません”;
}
else
{
Result = num1 / num2;
txtbox.Text = Result.ToString();
}
// 演算子を押されていなかった場合、入力されている文字をそのまま結果扱いにする
if (Operator == null)
Result = num2;
}
// 今入力されている数字をリセットする
Input_str = "";
// 演算子をOperator変数に入れる
Button btn = (Button)sender;
Operator = btn.Text;
if (Operator == "=")
Operator = "";
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
①IF文は、{}で囲わない場合は、次の1文だけが、条件に合致した場合の処理対象です。
2行目以降は、IF文の対象外ですから、必ず実行されます。このことから、txtbox.Text = Result.ToString();は重複しているようです。
②初期に「double num1 = Result; // 現在の結果」とありますが、Resultの値の設定は予めきちんとできているのでしょうか。
Result==0ならば、num1==0となり、Result = num1 + num2はnum2の値になります。
この辺をもう少し採光したらよろしいのではないでしょうか。
No.1
- 回答日時:
あなたの問題はアルゴリズムができていないことです。
慣れないうちはいきなりコーディングしないでフローチャートを作ることを心がけることです。
それができていない人に問題点を指摘しても、アルゴリズム上の重大性ととらえることがないため、ただのコーディングミスで終わってしまい、プログラマとしての基礎的素養の醸成にならないのです。
この程度の命題でこういう問題に陥る人のレベルは我々はよく認識できます。
こんな指摘すると言い訳をする人がほとんどですが、ではフローチャートが書けるかと言うと、まともに書けなかったりするもんです。
ようするにアルゴリズムをしっかり表現できないんです。
アルゴリズムを表現できなくてどうしてまともなプログラムが作れるでしょう。
面倒くさいというかもしれませんが、ちゃんとアルゴリズムがわかっていれば、フローチャートなんて物の5分か10分でさらさらっと走り書きでるもんで、それで問題ははっきりさせられます。
少なくともプロファイルに記したような世界で長年プログラミングをしてきた私のようなプロをはそう考えますし、多くの手下にもそうさせてきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ
Visual Basic(VBA)
-
電卓の小数点
その他(プログラミング・Web制作)
-
c# 文字列の最後から1文字削除したい
C言語・C++・C#
-
-
4
C♯初心者で、四則演算の電卓を作成しています。 クリアボタンを作り、テキストボックスに入力された数字
C言語・C++・C#
-
5
C#で電卓のプログラムを組んでいるのですが
C言語・C++・C#
-
6
C言語で電卓を作成する。修正お願いします。
C言語・C++・C#
-
7
C♯初心者で、四則演算の電卓を作成しています。 足し算した後に更に+、=ボタンを押すと倍々になる処理
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
乗換案内の作り方が知りたいです。
-
アルゴリズムとプロトコールの違い
-
タテヨコで数字の被らない二次...
-
正しい五十音順について
-
65536は2の何乗なのでしょうか?
-
PICマイコンのコピー(クローン...
-
変化させるセルが変化しない
-
Excelで4096点以上のFFTの方法
-
Bluestacks内でダウンロードし...
-
人時生産性をExcelで計算したい
-
パソコン
-
自動クエリとはどういうもので...
-
万年暦を導き出すプログラミング
-
未使用の変数を一括検索する方法
-
「ルーチン」という言葉の意味
-
スクリーンセーバーの作り方
-
VBからシャットダウンさせる方法
-
バッチファイルでウインドウを...
-
理系学生は皆プログラミングで...
-
寿命
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正しい五十音順について
-
アルゴリズムとプロトコールの違い
-
BCDについて
-
[ EXCEL VBA ] 図形を読み込む...
-
Stuck
-
グループを均等に分けるには?...
-
画像から文字を認識してテキス...
-
Dijkstraて
-
期間重複チェックがわかりません
-
JPEG圧縮で8×8に分割する理由に...
-
多変数関数の最小値を求めるプ...
-
OpenCVのライセンスについて
-
データを圧縮したい
-
ルービックキューブを揃えるた...
-
5人のテストの点数を入力すると...
-
C♯で電卓を作成しています。演...
-
ドロネー三角形のプログラム
-
vbaで、連立方程式を解く方法に...
-
動画で間違ったこと言っている
-
トップダウン解析とボトムアッ...
おすすめ情報