게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
간단한 기초 C++ 문장인데 템플레이트 사용 혹시 알수있을까요
게시물ID : it_2177짧은주소 복사하기
작성자 : 후끼후끼
추천 : 0
조회수 : 611회
댓글수 : 1개
등록시간 : 2014/10/14 00:48:45

동적으로 배열을 생성하여 성적은 내림차순으로 이름은 오름차순으로 정렬한다

출력형태 --------------------------------

처리할 학생수=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++ 기초문장인데 이 프로그램을 템플레이트를 사용해서 다시 작성하라고 하는데 혹시 어떻게 해야할지 어디어디 바꾸는지 알수있을까요? 

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호