U E D R , A S I H C RSS

CPP Study_2005_1/STL성�처리_3



1. Info

{{|작성� : 2005 08 03
수정회수 : 0회
구현특�사항

미구현부분

|}}

2. Input Text

김철수 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 

3. Code

#include <fstream> 
#include <iostream>
#include <string>
#include <vector>
#include <algorithm> //sort
#include <numeric> //accumulate

using namespace std; 


typedef struct student_table_struct {
	string name;
	vector<int> score;
	unsigned int total;
	double avg;
} student_type;


void readdata(vector<student_type>& ztable); //파�로부터 ��터를 �어온다
bool zcompare(const student_type ele1, const student_type ele2); //sort시 비� 조건
void printdata(vector<student_type>& ztable); //ìœë ¥
void operation(vector<student_type>& ztable); //�합과 �균

int main() 
{ 

		vector<student_type> ztable;
	
		//�료를 �는다.
		readdata(ztable);
		
		//��과 �균
		operation(ztable);

		//�균으로 정렬
		sort(ztable.begin(),ztable.end(),zcompare);
		
		//ìœë ¥
		printdata(ztable);

        return 0; 
} 



//파�로부터 ��터를 �어온다
void readdata(vector<student_type>& ztable){
	
	ifstream fin("data.txt");
	student_type tmp;
	int tmp2,i;

	while(1)
	{
		fin >> tmp.name;

		for(i=1;i<=4;i++)
		{
			fin >> tmp2;
			tmp.score.push_back(tmp2);
		}
		

		if(fin.eof()) break;
		ztable.push_back(tmp);
	}
	
}

//sort시 비� 조건
bool zcompare(const student_type ele1, const student_type ele2)
{	
	return ele1.avg > ele2.avg;
}

//ìœë ¥í•˜ê¸°
void printdata(vector<student_type>& ztable)
{
		int cnt=0;
		cout << "�름\t국어\t�어\t수학\t과학\t��\t�균" << endl;
		for(vector<student_type>::iterator i=ztable.begin();i<ztable.end();++i)
		{
			
			cout << i->name << "\t" <<
					i->score[cnt*4+0] << "\t" << 
					i->score[cnt*4+1] << "\t" <<
					i->score[cnt*4+2] << "\t" <<
					i->score[cnt*4+3] << "\t" << 
					i->total << "\t" <<
					i->avg <<endl;
			cnt++;
			
		}


}

void operation(vector<student_type>& ztable)
{
		for(vector<student_type>::iterator i=ztable.begin() ;i<ztable.end();++i)
		{
			i->total = accumulate(i->score.begin()+i->score.size()-4,i->score.end(),0);
			i->avg = i->total/4.0;
		}

}


4. Result

�름    국어    �어    수학    과학    ��    �균
태�호  59      98      75      91      324     81
김철수  66      78      77      84      323     80.75
마��  52      50      63      72      305     76.25
장준구  97      55      52      97      304     76
신순�  78      82      63      73      301     75.25
송��  78      53      74      75      296     74
한노�  66      82      82      94      281     70.25
최호민  72      66      73      52      280     70
양민수  95      62      94      53      263     65.75
박민철  86      65      62      68      237     59.25
Press any key to continue

5. Idle Talk

� 어려워따 ㅠㅠ


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:42
Processing time 0.1439 sec