Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

CPPStudy 2005 1/STL성적처리 3: Difference between revisions

From ZeroWiki
imported>qa22ahj
No edit summary
(Table transclusion repair v1)
 
Line 2: Line 2:


= Info =
= Info =
{{|작성일 : 2005 08 03
작성일 : 2005 08 03
수정회수 : 0회
수정회수 : 0회
구현특이사항
구현특이사항


미구현부분
미구현부분
|}}


= Input Text =
= Input Text =
Line 107: Line 105:
 
 
  cout << i->name << "\t" <<
  cout << i->name << "\t" <<
  i->score[cnt*4+0] << "\t" <<  
  i->score[cnt*4+0] << "\t" <<  
  i->score[cnt*4+1] << "\t" <<
  i->score[cnt*4+1] << "\t" <<
  i->score[cnt*4+2] << "\t" <<
  i->score[cnt*4+2] << "\t" <<
  i->score[cnt*4+3] << "\t" <<  
  i->score[cnt*4+3] << "\t" <<  
  i->total << "\t" <<
  i->total << "\t" <<
  i->avg <<endl;
  i->avg <<endl;
Line 148: Line 146:
----
----
[[CPPStudy_2005_1]]
[[CPPStudy_2005_1]]

Latest revision as of 12:46, 27 March 2026

Info

작성일 : 2005 08 03 수정회수 : 0회 구현특이사항

미구현부분

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 

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;
		}

}

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

Idle Talk

흡 어려워따 ㅠㅠ


CPPStudy_2005_1