= CPPStudy_2005_1/STL성적처리_1_class = * 01 남상협 * 8/9 = inputData = {{{~cpp 이름 국 영 수 과 김철수 59 98 75 91 마동탁 66 78 77 84 박민철 52 50 63 72 신순이 97 55 52 97 송영이 78 82 63 73 양민수 72 66 73 52 장준구 95 62 94 53 최호민 78 53 74 75 태석호 66 82 82 94 한노라 86 65 62 68 }}} = code = == Student.h == {{{~cpp //Student.h #ifndef GUARD_Student #define GUARD_Student #include #include using namespace std; class Student{ private: string m_name; vector m_subjects; int m_total; double m_average; public: Student(); void setName(string name); string getName() {return m_name;}; int getTotal() {return m_total;}; double getAverage() {return m_average;}; vector getSubjectScore() {return m_subjects;}; void addSubjectScore(int score); int sum(); double average(); void calculate(); }; #endif }}} == Student.cpp == {{{~cpp #include #include #include "Student.h" Student::Student() { m_total=0; m_average=0.0; } void Student::setName(string name) { m_name = name; } void Student::addSubjectScore(int score) { m_subjects.push_back(score); } int Student::sum() { return m_total=accumulate(m_subjects.begin(),m_subjects.end(),0); } double Student::average() { return m_average=m_total/m_subjects.size(); } void Student::calculate() { sum(); average(); } }}} == ScoreProcess.h == {{{~cpp #ifndef GUARD_ScoreProject #define GUARD_ScoreProject #include #include #include #include "Student.h" #define SUBJECT_SIZE 4 class ScoreProcess { private: vector &m_students; ifstream &m_fin; public: ScoreProcess(ifstream &fin,vector &students); istream& readScores(istream &in); ostream& displayScores(ostream &out); void process(); }; bool totalCompare(Student &s1,Student &s2); #endif }}} == ScoreProcess.cpp == {{{~cpp #include #include #include #include #include "ScoreProcess.h" ScoreProcess::ScoreProcess(ifstream &fin,vector &students) : m_fin(fin),m_students(students) { } istream& ScoreProcess::readScores(istream &in) { string name, temp; int scoreTemp; vector subject; m_fin>> name; while(m_fin>>temp && subject.size()!=SUBJECT_SIZE) subject.push_back(temp); do { Student *student = new Student(); student->setName(temp); for(vector::const_iterator it = subject.begin() ; it!=subject.end() && m_fin>>scoreTemp;++it) student->addSubjectScore(scoreTemp); student->calculate(); m_students.push_back(*student); }while(m_fin>>temp); return in; } ostream& ScoreProcess::displayScores(ostream &out) { for(vector::iterator it = m_students.begin() ; it!=m_students.end();++it) { out<getName()<<"\t"; vectorscores = it->getSubjectScore(); for(vector::const_iterator it2 = scores.begin();it2!=scores.end();++it2) out<<*it2<<"\t"; out<getTotal()<<"\t"<getAverage()<s2.getTotal(); } }}} == score.cpp (main) == {{{~cpp #include #include #include "ScoreProcess.h" #include "Student.h" int main() { ifstream fin("score.txt"); vector students; ScoreProcess scoreProcess(fin,students); scoreProcess.process(); return 0; } }}} = 결과 = http://zerowiki.dnip.net/~namsangboy/score.JPG = thread = * C++ 클래스를 너무 오래간만에 만들었더니 생성자에 리턴값이 없다는것 조차 까먹었다. 황당 -_-;