감 ¶
꼭 계그 교 기 .
CalculateGrade.h ¶
~cpp #ifndef CALCULATEGRADE_H_ #define CALCULATEGRADE_H_ #include "Student.h" class CalculateGrade { private: static const int NUM_STUDENT; // ( ) Student * student; // public: CalculateGrade(); // void sort_student(); // void show_good_student(); // void show_bad_student(); // 고 ~CalculateGrade(); // }; #endif
CalculateGrade.cpp ¶
~cpp #include <iostream> using namespace std; #include "CalculateGrade.h" // 기 // - 1 기 게 . const int CalculateGrade::NUM_STUDENT = 121; // CalculateGrade::CalculateGrade() { // student = new Student[NUM_STUDENT]; // 객 기 for (int i = 1; i < NUM_STUDENT; i++) student[i].input_grade(); } // . void CalculateGrade::sort_student() { int p; Student temp; for (int i = 1; i < NUM_STUDENT; i++) { p = i; for (int j = i + 1; j < NUM_STUDENT; j++) { if (student[p].average < student[j].average) p = j; } temp = student[i]; student[i] = student[p]; student[p] = temp; } } // ( 10%) . void CalculateGrade::show_good_student() { int num = NUM_STUDENT / 10; sort_student(); cout << " \n"; for (int i = 1; i <= num; i++) student[i].show(); cout << "\n\n"; } // 고( 1.5) . void CalculateGrade::show_bad_student() { cout << "고 \n"; for (int i = 1; i < NUM_STUDENT; i++) { if (student[i].average < 1.5) student[i].show(); } cout << "\n\n"; } // CalculateGrade::~CalculateGrade() { delete [] student; }
Student.h ¶
~cpp #ifndef STUDENT_H_ #define STUDENT_H_ class Student { private: static const int NUM_GRADE; // 과 ( ) int number; // double grade[4]; // 4과 public: double average; // Student(); // void find_average(); // 구 void input_grade(); // void show(); // }; #endif
Student.cpp ¶
~cpp #include <iostream> #include <fstream> #include <cstring> using namespace std; #include "Student.h" // 기 const int Student::NUM_GRADE = 4; // Student::Student() { average = 0.0; number = 0; } // 4과 . void Student::input_grade() { static char alpa_grade[9][3] = {"A+", "A", "B+", "B", "C+", "C", "D+", "D", "F"}; static double ital_grade[9] = {4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0.0}; static fstream fin("input.txt"); char str[3]; fin.ignore(100, ' '); // 까 fin >> number; fin.ignore(100, ':'); // double 1 1 for (int i = 0; i < NUM_GRADE; i++) { fin >> str; // >> white space(공) . for (int j = 0; j < 9; j++) { if (strcmp(str, alpa_grade[j]) == 0) { grade[i] = ital_grade[j]; break; } } } fin.ignore(100, '\n'); find_average(); } // 4 과 구. void Student::find_average() { double sum = 0.0; for (int i = 0; i < NUM_GRADE; i++) sum += grade[i]; average = sum / NUM_GRADE; } // . void Student::show() { cout << " : " << number << " : " << average << endl; }
testCalculateGrade.cpp ¶
~cpp #include "CalculateGrade.h" int main() { CalculateGrade test; test.show_good_student(); test.show_bad_student(); return 0; }