質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

2回答

2355閲覧

なぜ-1を代入するのかわからない

FujiharaK

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/05/25 09:53

コード ```using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace GradeCheck { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { labelResultM.Text = "ちゃんだい"; labelResultP.Text = "たくちゃん"; labelResultE.Text = "しんちゃん"; labelCompAvgM.Text = "和樹"; labelCompAvgP.Text = "さっきーなぁ"; labelCompAvgE.Text = "組長"; } private void textBoxAttendanceM_TextChanged(object sender, EventArgs e) { } private void textBoxAttenDanceP_TextChanged(object sender, EventArgs e) { } private void textBoxScoreM_TextChanged(object sender, EventArgs e) { } private void buttonJudge_Click(object sender, EventArgs e) { //出席率を浮動小数点値に変換 double AttendanceM, AttendanceP, AttendanceE; textToValue(textBoxAttendanceM.Text, out AttendanceM); textToValue(textBoxAttendanceP.Text, out AttendanceP); textToValue(textBoxAttendanceE.Text, out AttendanceE); //点数を整数値に変換 int scoreM, scoreP, scoreE; textToValue(textBoxScoreM.Text, out scoreM); textToValue(textBoxScoreP.Text, out scoreP); textToValue(textBoxScoreE.Text, out scoreE); //点数を判定する labelResultM.Text = scoreJudge(AttendanceM, scoreM); labelResultP.Text = scoreJudge(AttendanceP, scoreP); labelResultE.Text = scoreJudge(AttendanceE, scoreE); //平均値以上か未満か判定する labelCompAvgM.Text = averageJudge(scoreM, 1); labelCompAvgP.Text = averageJudge(scoreP, 2); labelCompAvgE.Text = averageJudge(scoreE, 3); } //テキストを浮動小数点値に変換 //(仮引数) text : 変換する文字列 val : 変換した浮動小数点値 //(返却値) なし private void textToValue(String text, out double val) { if (double.TryParse(text, out val) == false) val = -1.0; } //テキストを整数値に変換 //(仮引数)text : 変換する文字列 val : 変換した整数値 //(返却値)なし private void textToValue(string text, out int val) { if (int.TryParse(text, out val) == false) val = -1; } //成績判定 //(仮引数) Attendance : 出席率 score : 得点 //(返却値) 判定結果 private string scoreJudge(double Attendance, int score) { string result; if (Attendance < 0.0 || Attendance > 100.0 || score < 0 || score > 100) result = "エラー"; else if (Attendance >= 20) { if (score >= 80) result = "アスペ"; else if (score >= 70) result = "基地外"; else if (score >= 60) result = "4級"; else result = "退席"; } else result = "退席"; return result; } //平均点判定 //(仮引数) score : 得点 subject : 科目 (1=数学 2=物理 3=英語) //(返却値) 判定結果 private string averageJudge(int score, int subject) { string result; int average; if (score < 0 || score > 100) return "エラー"; switch (subject) { case 1: average = 30; break; case 2: average = 60; break; case 3: average = 75; break; default: return "エラー"; } if (score >= average) result = "万歳"; else result = "天皇万歳"; return result; } private void buttonReset_Click(object sender, EventArgs e) { textBoxAttendanceM.Text = "0.0"; textBoxAttendanceP.Text = "0.0"; textBoxAttendanceE.Text = "0.0"; textBoxScoreM.Text = "0"; textBoxScoreP.Text = "0"; textBoxScoreE.Text = "0"; labelResultM.Text = ""; labelResultP.Text = ""; labelResultE.Text = ""; labelCompAvgM.Text = ""; labelCompAvgP.Text = ""; labelCompAvgE.Text = ""; } private void labelResultE_Click(object sender, EventArgs e) { } private void label7_Click(object sender, EventArgs e) { } private void label8_Click(object sender, EventArgs e) { } private void label6_Click(object sender, EventArgs e) { } private void textBoxAttendanceE_TextChanged(object sender, EventArgs e) { } private void textBoxScoreE_TextChanged(object sender, EventArgs e) { } private void textBoxScoreP_TextChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) //② { } } } なぜ val = -1.0;やval = -1;を書くのかわからないのですが・・・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/25 10:19

コードは ``` と ``` で囲ってください。インデントされてないコードは読んでくれる人が少ないと思いますよ。
len_souko

2017/05/25 14:09

関係ない部分もすべてコピペだし上記の指摘もあるし、中を流し見したけどアスペとか基地外とか悪意に満ちた言葉と一緒に万歳や天皇万歳を使うとか、何か悪意があって書いてるんでしょうか?
guest

回答2

0

入力値が数値(intやdouble)に変換できなければ -1 と見なしたいから。
そうすることで scoreJudge メソッドでエラーと判定されるようです。
なぜエラーと判定するかはこれを作った人にしかわかりません。

投稿2017/05/25 10:35

workaholist

総合スコア559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

完全な素人の考えですが

C#

1if (Attendance < 0.0 || Attendance > 100.0 || 2 3score < 0 || score > 100) 4 5result = "エラー";

ここの判定のためではないでしょうか。
出席率か得点のどちらかがおかしかった場合に
"エラー"と返せるようにするのが目的だったのではと
私個人は推測します。

このプログラムが動くかどうかは調べていないので
実際にどういった動きになるかは分かりません。

#補足
作ってみました。

C#

1using System; 2using System.Windows.Forms; 3 4namespace testcheck1 5{ 6 public partial class Form1 : Form 7 { 8 public Form1() 9 { 10 InitializeComponent(); 11 } 12 13 public static string result(string Attendance, string Score, string Average) 14 { 15 int attendance; 16 if(!int.TryParse(Attendance, out attendance)) 17 { 18 return "ERROR"; 19 } 20 21 int score; 22 if(!int.TryParse(Score, out score)) 23 { 24 return "ERROR"; 25 } 26 27 int average; 28 if (!int.TryParse(Average, out average)) 29 { 30 return "ERROR"; 31 } 32 33 if (attendance < 0 || attendance > 100 || score < 0 || score > 100 34 || average < 0 || average > 100) 35 { 36 return "ERROR"; 37 } 38 39 if (attendance < 20) return "退席"; 40 41 string tmp = string.Empty; 42 43 if (score >= average) tmp += "万歳/"; 44 45 if (score >= 80) return tmp += "アスペ"; 46 if (score >= 70) return tmp += "基地外"; 47 if (score >= 60) return tmp += "4級"; 48 else return tmp += "退席"; 49 } 50 51 private void button1_Click(object sender, EventArgs e) 52 { 53 ちゃんだい評価.Text = result(ちゃんだい出席率.Text, ちゃんだい点数.Text, ちゃんだい平均点.Text); 54 たくちゃん評価.Text = result(たくちゃん出席率.Text, たくちゃん点数.Text, たくちゃん平均点.Text); 55 しんちゃん評価.Text = result(しんちゃん出席率.Text, しんちゃん点数.Text, しんちゃん平均点.Text); 56 和樹評価.Text = result(和樹出席率.Text, 和樹点数.Text, 和樹平均点.Text); 57 さっきーなぁ評価.Text = result(さっきーなぁ出席率.Text, さっきーなぁ点数.Text, さっきーなぁ平均点.Text); 58 組長評価.Text = result(組長出席率.Text, 組長点数.Text, 組長平均点.Text); 59 } 60 } 61}

コード無しの完成品
私は私のプログラムが正常に動くかどうかを一切保証しません。
利用については自己責任でお願いします。

投稿2017/05/25 10:27

編集2017/05/26 08:33
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問