2017-08-22 7 views
-4

ここにNoob。私は、ユーザーが配列に入力するグレード数を入力し、それらが選択したインデックス数のグレードを入力できるようにするプログラムを作成しました。私は、入力された成績に基づいてパーセンテージのパーセンテージを出力しようとしていますが、実際の文字の成績を出力していますが、文字の成績に変換するために何をコードするのか分かりません。どんな助けもありがとうございます。C#グレードのパーセンテージを文字のグレードに変換するにはどうすればよいですか?

コード:あなたは計算された平均からのお手紙の等級を取得するための関数を作ることができます

public static void Main(string[] args) 
    { 
     int ARRAYLENGTH = 0; 
     int i = 0; 
     double sum = 0; 

     Console.WriteLine("How many scores would you like to enter? "); 
     ARRAYLENGTH = Convert.ToInt32(Console.ReadLine()); 

     string[] test = new string[ARRAYLENGTH]; 

     for (i = 0; i < test.Length; i++) 

     { 
      Console.Write("Enter your test score " + (i + 1) + ": "); 
      test[i] = 
      Console.ReadLine(); 
     } 
     for (i = 0; i < test.Length; i++) 
     { 
      sum = sum + 
      Convert.ToDouble(test[i].Trim()); 
     } 
     Console.WriteLine("\nThis is your average = " + (sum/test.Length)); 
     Console.WriteLine("\nYour grade is: ");//Not sure how this would work 
     Console.Write("\nPress the [Enter] key to exit."); 
     Console.ReadLine(); 
    } 

答えて

0

、あなたではなく、いくつかのより多くの割り当てを(ことの方がよいでしょうprint文のグレードを計算するよりも)、私はそれを以下に含めました。 varでパーセンテージを取得したら、if/elseまたはswitchを使用して文字の等級を導出します。最も簡単な方法で

double gradePer = sum/test.Length 
string gradeLetter = "F"; 

if (gradePer >= 60 && gradePer < 70) { 
    gradeLetter = "D"; 
} else if (gradePer >= 70 && gradePer < 80) { 
    gradeLetter = "C"; 
} // you fill in the rest 

Console.WriteLine("\nThis is your average = " + gradePer); 
Console.WriteLine("\nYour grade is: " + gradeLetter); 
0

:1の場合

static char GetLetterGrade(double score) 
{ 
    if (score >= 90.0) 
    { 
     return 'A'; 
    } 

    if (score >= 80.0) 
    { 
     return 'B'; 
    } 

    if (score >= 70.0) 
    { 
     return 'C'; 
    } 

    if (score >= 60.0) 
    { 
     return 'D'; 
    } 

    return 'F'; 
} 
-1

...私は辞書を作成します。

Key - Value 
10 - A 
9 - A 
8 - B 
7 - C 
6 - D 
5 - F 
4 - F 
3 - F 
2 - F 
1 - F 
0 - F 

今、あなたはこの辞書が設定されていることを、あなたは10で、あなたの方法、除算にグレードを取ることができ、そのフロアに乗ってその値に関連するエントリを見つけます。

public class Grades 
{ 
    Dictionary<int, char> GradeValues { get; set; } 

    public Grades() 
    { 
     GradeValues.Add(10, 'A'); 
     GradeValues.Add(9, 'A'); 
     GradeValues.Add(8, 'B'); 
     ... 
     GradeValues.Add(0, 'F'); 
    } 
    public char GetGrade(int grade) 
    { 
     char value = GradeValues[int.Floor(grade/10)]; 
     if (value == null) 
      return 'F'; 
     return value; 
    } 
} 

これはおそらく、これを処理するより良い方法があると言われています。

編集:これは、成績が88に達したときにB級またはその他の成績を取得していないことを前提としています。

ステートメントやケースがうまくいく場合は、この開発方法をお勧めします。学年を変更したいときは、拡張する方が簡単です。メソッドを更新する必要はありません。コンストラクタで辞書を更新するだけで済みます。

編集2:私は、誰かがすべての答えをdownvoted見てきました。私は彼らがすべて有効なので、他の答えをupvoted ...

あなたはそのスコアのグレードで0から100までの辞書全体を記入することができます。

0

各文字の値の範囲を指定したスイッチを使用します。

関連する問題