동적으로 배열을 생성하여 성적은 내림차순으로 이름은 오름차순으로 정렬한다
출력형태 --------------------------------
처리할 학생수=10
학생(1)-----
이름=홍길동
성적=86
등급=B+
-----------
학생(2)-----
이름=홍길동
성적=90
등급=A0
----------
...
성적순 리스트
==============
이름 성적 등급
-------------
이름순 리스트
==============
이름 성적 등급
소스코드-------------------------------------------
#include <iostream>
#include <string>
using namespace std;
struct S
{
string name;
string grade;
int score;
};
class Student
{
int m;
S *stu,temp;
public:
void inputStudent();
void score_sort();
void name_sort();
char *inputGrade(int score);
void outputStudent();
};
int main()
{
Student s;
s.inputStudent();
s.outputStudent();
cout << endl;
return 0;
}
void Student::inputStudent()
{
cout << "인원 수를 입력하시오: "; cin >> m;
stu = new S[m];
for(int i=0; i<m; i++)
{
cout << "학생 (" << i+1 << ")-----" << endl;
cout << "이름 = "; cin >> stu[i].name;
cout << "점수 = "; cin >> stu[i].score;
stu[i].grade = inputGrade(stu[i].score);
cout << "등급 = " << stu[i].grade << endl;
cout << "---------------" << endl;
}
}
void Student::score_sort()
{
for(int i=m-1; i>0; i--)
{
for(int j=0; j<i; j++)
{
if(stu[j].score < stu[j+1].score)
{
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
else if(stu[j].score == stu[j+1].score)
{
if(stu[j].name > stu[j+1].name)
{
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
}
}
void Student::name_sort()
{
for(int i=m-1; i>0; i--)
{
for(int j=0; j<i; j++)
{
if(stu[j].name > stu[j+1].name)
{
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
else if(stu[j].name == stu[j+1].name)
{
if(stu[j].score < stu[j+1].score)
{
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
}
}
char * Student::inputGrade(int score)
{
if(score >= 95)
return "A+";
else if(score >= 90)
return "A0";
else if(score >= 85)
return "B+";
else if(score >= 80)
return "B0";
else if(score >= 75)
return "C+";
else if(score >= 70)
return "C0";
else if(score >= 65)
return "D+";
else if(score >= 60)
return "D0";
else
return "F";
}
void Student::outputStudent()
{
cout << endl << endl;
cout << "성적순 리스트" << endl;
cout << "=============" << endl;
cout << "이름 성적 등급" << endl;
score_sort();
for(int i=0; i<m; i++)
{
cout << stu[i].name << " " << stu[i].score << " " << stu[i].grade << endl;
}
cout << endl << endl;
cout << "이름순 리스트" << endl;
cout << "=============" << endl;
cout << "이름 성적 등급" << endl;
name_sort();
for(int i=0; i<m; i++)
{
cout << stu[i].name << " " << stu[i].score << " " << stu[i].grade << endl;
}
delete[] stu;
}
C++ 기초문장인데 이 프로그램을 템플레이트를 사용해서 다시 작성하라고 하는데 혹시 어떻게 해야할지 어디어디 바꾸는지 알수있을까요?