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 <string> #include <vector> using namespace std; class Student{ private: string m_name; vector<int> 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<int> getSubjectScore() {return m_subjects;}; void addSubjectScore(int score); int sum(); double average(); void calculate(); }; #endif
Student.cpp ¶
~cpp #include <algorithm> #include <numeric> #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 <vector> #include <iostream> #include <fstream> #include "Student.h" #define SUBJECT_SIZE 4 class ScoreProcess { private: vector<Student> &m_students; ifstream &m_fin; public: ScoreProcess(ifstream &fin,vector<Student> &students); istream& readScores(istream &in); ostream& displayScores(ostream &out); void process(); }; bool totalCompare(Student &s1,Student &s2); #endif
ScoreProcess.cpp ¶
~cpp #include <algorithm> #include <vector> #include <iostream> #include <fstream> #include "ScoreProcess.h" ScoreProcess::ScoreProcess(ifstream &fin,vector<Student> &students) : m_fin(fin),m_students(students) { } istream& ScoreProcess::readScores(istream &in) { string name, temp; int scoreTemp; vector<string> 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<string>::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<Student>::iterator it = m_students.begin() ; it!=m_students.end();++it) { out<<it->getName()<<"\t"; vector<int>scores = it->getSubjectScore(); for(vector<int>::const_iterator it2 = scores.begin();it2!=scores.end();++it2) out<<*it2<<"\t"; out<<it->getTotal()<<"\t"<<it->getAverage()<<endl; } return out; } void ScoreProcess::process() { readScores(cin); sort(m_students.begin(),m_students.end(),::totalCompare); displayScores(cout); } bool totalCompare(Student &s1,Student &s2) { return s1.getTotal()>s2.getTotal(); }
score.cpp (main) ¶
~cpp #include <fstream> #include <vector> #include "ScoreProcess.h" #include "Student.h" int main() { ifstream fin("score.txt"); vector<Student> students; ScoreProcess scoreProcess(fin,students); scoreProcess.process(); return 0; }
thread ¶
- C++ 간 값 까. -_-;