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.1
- 回答日時:
あなたの問題はアルゴリズムができていないことです。
慣れないうちはいきなりコーディングしないでフローチャートを作ることを心がけることです。
それができていない人に問題点を指摘しても、アルゴリズム上の重大性ととらえることがないため、ただのコーディングミスで終わってしまい、プログラマとしての基礎的素養の醸成にならないのです。
この程度の命題でこういう問題に陥る人のレベルは我々はよく認識できます。
こんな指摘すると言い訳をする人がほとんどですが、ではフローチャートが書けるかと言うと、まともに書けなかったりするもんです。
ようするにアルゴリズムをしっかり表現できないんです。
アルゴリズムを表現できなくてどうしてまともなプログラムが作れるでしょう。
面倒くさいというかもしれませんが、ちゃんとアルゴリズムがわかっていれば、フローチャートなんて物の5分か10分でさらさらっと走り書きでるもんで、それで問題ははっきりさせられます。
少なくともプロファイルに記したような世界で長年プログラミングをしてきた私のようなプロをはそう考えますし、多くの手下にもそうさせてきました。
No.2
- 回答日時:
①IF文は、{}で囲わない場合は、次の1文だけが、条件に合致した場合の処理対象です。
2行目以降は、IF文の対象外ですから、必ず実行されます。このことから、txtbox.Text = Result.ToString();は重複しているようです。
②初期に「double num1 = Result; // 現在の結果」とありますが、Resultの値の設定は予めきちんとできているのでしょうか。
Result==0ならば、num1==0となり、Result = num1 + num2はnum2の値になります。
この辺をもう少し採光したらよろしいのではないでしょうか。
お探しの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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ
Visual Basic(VBA)
-
C#で電卓のプログラムを組んでいるのですが
C言語・C++・C#
-
C♯初心者で、四則演算の電卓を作成しています。 クリアボタンを作り、テキストボックスに入力された数字
C言語・C++・C#
-
-
4
C#テキストボックスの文字を配列にいれてその後表示する
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Stuck
-
正しい五十音順について
-
Dijkstraて
-
m個の数字をn個のグループに分...
-
アルゴリズムの将来性について
-
[ EXCEL VBA ] 図形を読み込む...
-
ASPでのオークション
-
ルービックキューブの解法プロ...
-
リーグ戦日程表作成アルゴリズ...
-
迷路プログラム
-
確率論的な麻雀の勝ち方を教え...
-
VB2010にて分数表示(約...
-
【VisualBasic】ユークリッドの...
-
初心者がディープラーニングの...
-
5人のテストの点数を入力すると...
-
ガウス・ジョルダン法のプログ...
-
複数の点を最短距離で全て繋ぐ...
-
アルゴリズムとプロトコールの違い
-
A*アルゴリズム
-
最大公約数を求めたい!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正しい五十音順について
-
Dijkstraて
-
Stuck
-
[ EXCEL VBA ] 図形を読み込む...
-
BCDについて
-
アルゴリズムとプロトコールの違い
-
期間重複チェックがわかりません
-
グループを均等に分けるには?...
-
三次元形状曲面の導出法
-
あいまい検索(文字列一致率)
-
Visual studio2019 C#で生まれ...
-
gooという検索エンジンの後にGo...
-
フリーセルの難易度について
-
CRC-CCITT16の算出法
-
経路探索について
-
C♯で電卓を作成しています。演...
-
理系の高校生です。大学で情報...
-
OpenCVのライセンスについて
-
偏りのある乱数のアルゴリズム
-
詰め将棋をとくのは、アルゴリ...
おすすめ情報