학생5명 성적을 입력받아 평균 등급을 구하고 높은순으로 출력하는프로그램을 만드려는데요...
다른건 다했는데 높은순으로 출력하는데서 막혔습니다.
도와주시면 정말 감사드리겠습니다.
namespace Project1
{
public class Student
{
public int m_nNumber;
public int m_nScore;
public Student(int nNumber, int nScore)
{
m_nNumber = nNumber;
m_nScore = nScore;
}
}
class Program
{
static void Main(string[] args)
{
int nTotal = 0;
double dMean = 0;
Array arrRecord = Array.CreateInstance(typeof(Student), 5);
Console.WriteLine("5명의 성적입력");
for (int i = 0; i < 5; ++i)
{
string strScore = Console.ReadLine();
arrRecord.SetValue(new Student(i + 1, Convert.ToInt32(strScore)), i);
nTotal += ((Student)arrRecord.GetValue(i)).m_nScore;
}
for (int i = 0; i < arrRecord.Length; ++i)
{
int nScore = ((Student)arrRecord.GetValue(i)).m_nScore;
string strGrade = "F";
if (nScore >= 90)
strGrade = "A";
else if (nScore >= 80)
strGrade = "B";
else if (nScore >= 70)
strGrade = "C";
else if (nScore >= 60)
strGrade = "D";
Console.WriteLine("{0}번 학생 성적 : {1}, 등급 : {2}", i + 1, nScore, strGrade);
}
dMean = (double)nTotal / arrRecord.Length;
Console.WriteLine("총점 : {0}, 평균 : {1}", nTotal, dMean);
}
}
}
C# 은 ICompare 기능을 이용하면 간단합니다.~
(c# 에서 sort 방법은 여러가지이며, 지금 상황에서 이 방법이 제일 간단해 보입니다.)
1.먼저 ICompare 인터페이스로 하는 클래스를 생성합니다.
public class TotalComparer : IComparer
{
public int Compare(Object x, Object y)
{
return (x as Student).m_nScore - (y as Student).m_nScore;
}
}
2. array 에서 ICompare 를 호출해 줍니다.
Array.Sort(arrRecord, new TotalComparer());
이상입니다.^^