~cpp #ifndef GRADE_H_ #define GRADE_H_ #include "student.h" class Grade { private: Student * students; public: Grade(); void show_good_student(); void show_bad_student(); void show_all_student(); ~Grade(); }; #endif
~cpp #include <iostream> using namespace std; #include "grade.h" #define MAX_STUDENT 121 Grade::Grade() { students = new Student[MAX_STUDENT]; for (int i=1;i<MAX_STUDENT;i++) { students[i].input(); } } void Grade::show_good_student() { double compare=4.5; int num=MAX_STUDENT/10; int good_student_number=0; cout << "장학생 명단\n"; while (1) { int i,j; double temp=4.5; for (i=1;i < MAX_STUDENT;i++) { if (compare-students[i].average < temp && compare-students[i].average > 0 ) { temp=compare-students[i].average; j=i; } } for (i=1;i < MAX_STUDENT;i++) { if (compare-students[i].average == temp) { students[i].show(); good_student_number++; } } compare=students[j].average; if (good_student_number>num) { break; } } cout << "\n\n"; } void Grade::show_bad_student() { cout << "학고 명단\n"; for (int i=1;i<MAX_STUDENT;i++) { if (students[i].average<1.5) students[i].show(); } cout << "\n\n"; } void Grade::show_all_student() { for (int i=1;i<MAX_STUDENT;i++) { students[i].show(); } cout << "\n\n"; } Grade::~Grade() { delete [] students; }
~cpp #ifndef STUDENT_H_ #define STUDENT_H_ class Student { private: int school_number; double grade[4]; public: Student(); double average; void input(); void show(); void get_average(); }; #endif
~cpp #include <iostream> #include <fstream> using namespace std; #include "student.h" Student::Student() { average = 0.0; school_number = 0; } void Student::input() { static fstream fin("input.txt"); char str[3]; double sum = 0.0; int i; fin.ignore(100, ' '); fin >> school_number; fin.ignore(100, ':'); for (i=0;i<4;i++) { fin >> str; if (str[0]=='F') { grade[i] = 0; } else { grade[i] = ((int)'F'-1)-(int)str[0]; } if (str[1]=='+'){ grade[i]+=0.5; } } fin.ignore(100, '\n'); for (i=0;i<4;i++){ sum += grade[i]; } average = sum/4; } void Student::show() { cout << "학번 : " << school_number << " 평점 : " << average << endl; }
~cpp #include "grade.h" #include <iostream> using namespace std; void main() { Grade str; str.show_good_student(); str.show_bad_student(); str.show_all_student(); /* char str1[3]="A+" ; double sum1 = 0.0, average1 ; int i1 ; average1=((int)'F'-1)-(int)str1[0]; if (str1[1]=='+'){ average1+=0.5; } cout<<average1<<endl; cout<<(int)str1[0]<<endl<<(int)str1[1]<<endl<<(int)str1[2]; */} }