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.0102 sec