![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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♯初心者で、四則演算の電卓を作成しています。 クリアボタンを作り、テキストボックスに入力された数字
C言語・C++・C#
-
-
4
C#で電卓のプログラムを組んでいるのですが
C言語・C++・C#
-
5
c# 文字列の最後から1文字削除したい
C言語・C++・C#
-
6
C#テキストボックスの文字を配列にいれてその後表示する
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正しい五十音順について
-
vbaで、連立方程式を解く方法に...
-
正数分割の個数
-
ドロネー三角形のプログラム
-
ベイチ・カルノー図以外のとき方。
-
visual basic プログラミング
-
[ EXCEL VBA ] 図形を読み込む...
-
多変数関数の最小値を求めるプ...
-
BCDについて
-
データを圧縮したい
-
プログラミングの才能のある無...
-
Stuck
-
期間重複チェックがわかりません
-
プラグラマーを続けていくため...
-
TSP問題
-
独立成分分析 評価関数 ソフ...
-
VB2010にて分数表示(約...
-
最短経路問題を1つ算出するスク...
-
六曜の自動計算について
-
脳内メーカーのようなサービス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正しい五十音順について
-
Dijkstraて
-
Stuck
-
BCDについて
-
[ EXCEL VBA ] 図形を読み込む...
-
期間重複チェックがわかりません
-
アルゴリズムとプロトコールの違い
-
複数の点を最短距離で全て繋ぐ...
-
グループを均等に分けるには?...
-
5人のテストの点数を入力すると...
-
ハノイの塔のさいきアルゴリズ...
-
ハッシュアルゴリズム
-
偏りのある乱数のアルゴリズム
-
C♯で電卓を作成しています。演...
-
多変数関数の最小値を求めるプ...
-
あいまい検索(文字列一致率)
-
JPEG圧縮で8×8に分割する理由に...
-
シードを考慮したトーナメント...
-
画像から文字を認識してテキス...
-
vbaで、連立方程式を解く方法に...
おすすめ情報