U E D R , A S I H C RSS

CPP Study_2005_1/STL성적처리_1_class

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++ 클 . 황 -_-;
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:42
Processing time 0.0110 sec