[ create a new paste ] login | about

Link: http://codepad.org/rW437xjp    [ raw code | output | fork ]

박정욱 - C++, pasted on May 10:
//객체지향 금123 200911636
//ex1) 12-2 합산점수 역순 출력
#include<iostream>

using namespace std;

#define NUMBERS_OF_USERS 3												//User의 수를 Define 시킨다.

struct User																//구조체 User의 정의
{
	char userID[20];													//아이디
	char passwd[20];													//패스워드
	int scores_per_stage[5];											//스테이지별 점수
	unsigned long magicPt;												//MP
	unsigned long healthPt;												//HP
	int sum;															//sum=MP+HP+스테이지 점수1,2,3,4,5
	int rank;															//순위;다른 유저와 비교하여 순위를 구함.
};

void cout_user(User A);													//1명의 유저의 정보를 cout 한다.
void cout_users(User user[]);											//user 배열의 모든 유저들을 for문을 사용하여 cout_user[i]를 호출한다
void get_sum_rank(User user[]);											//user 배열의 모든 유저의 합계를 구하고, 합계를비교해 순위를 정한다.
void cout_by_rank(User user[]);											//순위를 비교하여, 순위 역순으로 cout_user함수를 호출한다.

int Rank[NUMBERS_OF_USERS];												//Rank배열;user[i].rank 를 참조하여 i를 저장한다.

//main 함수
void main()
{
	User user[NUMBERS_OF_USERS] =										//user의 초기화. 유저의 수는 3명, 총합과 순위는 비워둔다.
	{
		{"denzang","sd933k", {80, 56, 72, 86, 91}, 300, 10010},
		{"zzazang","!@sd487", {100, 98, 100, 100, 91},20000, 19000},
		{"gozang","df321#4", {34, 54, 70, 48, 54}, 400, 5000}
	};

	get_sum_rank(user);													//get_sum_rank함수 호출;user들의 총합과 랭크를 구하여ㅎ 저장시킨다.
	cout_users(user);													//cout_users함수 호출;user들의 정보를 출력한다.
	cout << endl <<"총합 역순으로 정렬"<<endl;							//총합 역순으로 정렬.
	cout_by_rank(user);													//cout_by_rank함수 호출;총합의 역순으로 user들의 정보를 출력한다.
}

//cout_users함수
//배열 user의 모든 정보를 출력한다.
void cout_users(User user[])
{	int i;																//for문을 이용하기 위해 쓰는 변수
	cout <<	"ID	PW	st1	st2	st3	st4	st5	MP	HP	sum" << endl;			//최상단에 ID	PW	st1 st2 st3 st4 st5	MP	HP	sum을 표시한다.
	for(i=0; i<NUMBERS_OF_USERS ; i++)									//for문을 사용하여 각 user들(user[i])을 cout_user함수로 호출한다
	{	cout_user(user[i]);	}
};

//cout_user함수
//1명의 user의 정보를 출력한다.
void cout_user(User A)
{
	int i;																//for문을 이용하기 위해 쓰는 변수
	//cout <<	"ID	PW	st1	st2	st3	st4	st5	MP	HP	sum" << endl;
	cout <<	A.userID <<"	"<<A.passwd<<"	";							//ID,PW 출력.
	for(i=0; i<5; i++)													//for문을 이용하여 scores_per_stage배열의 값을 순차적으로 출력
	{	cout << A.scores_per_stage[i]<<"	";}
	cout << A.magicPt << "	"<<A.healthPt<<"	"<<A.sum<<endl;			//MP,HP,sum 출력.
};

//get_sum_rank함수
//user들의 총합과 순위를 구한다.
void get_sum_rank(User user[])
{
	int i,j;															//2중 for문을 사용하시위한 변수들
	//get sum
	for(i=0; i< NUMBERS_OF_USERS; i++)									//총합을 구하는 for문. MP+HP+st1,2,3,4,5=sum
	{	user[i].sum=0;	user[i].rank=0;
		user[i].sum +=	 user[i].healthPt+user[i].magicPt;
		for(j=0; j<5; j++)
		{	user[i].sum	+=		user[i].scores_per_stage[j];	}		
	}

	//get rank
	for(i=0 ; i<NUMBERS_OF_USERS; i++)									//순위를 구하는 함수. 첫번째 유저부터 순차적으로 sum을 비교한다.
	{	for(j=i+1 ; j<NUMBERS_OF_USERS ; j++)							//비교하여 더 높은 총합을 가진 유저의 rank를 증가시킨다.
		{	if(user[i].sum < user[j].sum)								
			{	user[j].rank++;	}
			else	
			{	user[i].rank++;	}	
		}
	}
};

//cout_by_rank함수
//순위의 역순으로 출력한다.
void cout_by_rank(User user[])
{	
	int i, j, tmp;														//for문을 사용하기위한 변수 i와 j. 임시저장변수 tmp
	//랭크 역순으로 정렬
	for(i=0 ; i< NUMBERS_OF_USERS ; i++)								//순위를 낮은순으로 비교하여 Rank배열에 저장시킨다.
	{	for(j=0;j<NUMBERS_OF_USERS ; j++)								//ex) Rank[i]= user[j].rank의 j
		{	if(user[j].rank==i)
			{	Rank[i]= j;}
		}
	}

	//출력
	for(i=0; i<NUMBERS_OF_USERS;i++)									//저장된 배열 Rank의 값을 이용해 총합 역순으로 출력한다.
	{	cout_user(user[Rank[i]]);	}									
};


Output:
1
2
Line 28: error: '::main' must return 'int'
compilation terminated due to -Wfatal-errors.


Create a new paste based on this one


Comments: