U E D R , A S I H C RSS

Term Project/재니

작성�� 페�지

02 장재니 Genie

씨뿔뿔 1학기 과제로 나왔� 건�....
허접하지만...^^

소스

~cpp 
#include <iostream>
#include <stdlib.h>
using namespace std;

void menu1(), menu2(), menu3(), menu4(), sub_menu(),  avr(), sort(int, int),
	grade(int), prt_select(), prt_all(), error();

const int students = 20;

char name[students][7] = {"고재선", "권현진", "김�욱", "김무�", "김민재",
			"김성�", "김�준", "김윤섭", "김철호", "김태완",
			"김태완", "김�균", "류재현", "문구봉", "박대�",
			"박세연", "박준성", "서수�", "양민우", "양정�"};

int stats[students][4] = {
	{20025301, 85, 90, 80}, {20025302, 80, 88, 85}, {20025303, 88, 93, 75}, {20025309, 75, 85, 70},
	{20025307, 73, 83, 77}, {20025304, 95, 88, 80}, {20025308, 85, 65, 90}, {20025305, 94, 70, 65},
	{20025306, 80, 75, 88}, {20025310, 65, 73, 94}, {20025313, 77, 78, 99}, {20025312, 80, 77, 85}, 
	{20025311, 95, 80, 95}, {20025315, 78, 90, 75}, {20025314, 90, 95, 65}, {20025316, 88, 88, 80}, 
	{20025317, 83, 76, 75}, {20025318, 75, 68, 70}, {20025319, 65, 70, 80}, {20025320, 88, 85, 90}};

char sort_name[students + 1][7];
int sort_stats[students + 1][4];

int select;
int sum_sub[3], sum_avr;
double avr_ind[students + 1];

int main()
{
	for ( ; ; )
	{
		for (int i = 0 ; i < students ; i++)
		{
			for (int j = 0 ; j < 7 ; j++)
				sort_name[i][j] = name[i][j];
			for (j = 0 ; j < 4 ; j++)
				sort_stats[i][j] = stats[i][j];
		}
		system("cls");
		cout << " 메뉴n1) 과목별 리스트n2) 과목별 성�순 리스트n3) 학� 리스트n"
			<< "4) �균 성�순 리스트n5) 종료n메뉴를 선�하십시오. ";
		cin >> select;
		if (select == 1)	menu1();			// ê°� ì„ íƒ�ì—� 맞게 함수를 호ìœ
		else if (select == 2)	menu2();
		else if (select == 3)	menu3();
		else if (select == 4)	menu4();
		else if (select == 5)	break;			// 5번 메뉴는 종료
		else error();		// 잘못 입력하였ì�„ 경우 ì—�러메시지를 ìœë ¥í•˜ëŠ” 함수 호ìœ
		system("pause");				// 실행 결과를 확�하기 위해 실행� 잠시 멈춤
	}
	cout << "n종료하겠습니다.nn";		// 종료 시 종료 메시지를 ìœë ¥í•¨
	return 0;							// 실행 종료
}

void menu1()		// 1번 메뉴 : 사용ìž�ê°€ 지정한 과목ì�„ 입력순ì—� ë”°ë�¼ 화면ì—� ìœë ¥í•¨
{
	sub_menu();		// 서브메뉴 호ìœ
	if (select >= 1 && select <= 3)	// 서브메뉴ì�˜ ì„ íƒ�ì—� ë”°ë�¼ 화면ì—� ìœë ¥í•˜ëŠ” 함수를 호ìœ
		prt_select();
}

void menu2()		// 2번 메뉴 : 사용ìž�ê°€ 지정한 과목ì�˜ 성ì �순ì—� ë”°ë�¼ 화면ì—� ìœë ¥í•¨
{
	sub_menu();		// 서브메뉴 호ìœ
	if (select >= 1 && select <= 3)	{
		for (int i = 1 ; i < students ; i++)
			for (int j = 0 ; j < i ; j++)
				if (sort_stats[i][select] > sort_stats[j][select])	// 선�� 과목� 따�
					sort(i, j);				// ì •ë ¬ 함수를 호ìœí•¨
		prt_select();	// ì„ íƒ�ë�œ 서브메뉴ì—� ë”°ë�¼ ìœë ¥í•˜ëŠ” 함수를 호ìœ
	}
}

void menu3()		// 모든 ìž…ë ¥ ë�°ì�´í„°ì™€ í�‰ê·  ë°� í•™ì �ì�„ ìž…ë ¥ 순ì—� ë”°ë�¼ ìœë ¥í•¨
{
	avr();			// í�‰ê·  ì‚°ìœ í•¨ìˆ˜ë¥¼ 호ìœ
	cout << "ní•™ìƒ� 리스트n";		// ì„ íƒ�ë�œ 메뉴를 화면ì—� ìœë ¥í•¨
	prt_all();		// 화면ì—� ë�°ì�´í„°ë¥¼ ìœë ¥í•¨
}

void menu4()		// 모든 ìž…ë ¥ ë�°ì�´í„°ì™€ í�‰ê·  ë°� í•™ì �ì�„ í�‰ê·  성ì � 순으로 정렬하여 ìœë ¥í•¨
{
	avr();			// í�‰ê·  ì‚°ìœ í•¨ìˆ˜ë¥¼ 호ìœ
	for (int i = 1 ; i < students ; i++)		// �균 성�� 따�
		for (int j = 0 ; j < i ; j++)	// ì •ë ¬ 함수를 호ìœí•˜ì—¬ 정렬함
			if (avr_ind[i] > avr_ind[j])
				sort(i, j);	// 루프� 따� 정렬하기 위해 i, j 변수를 전달함
	cout << "ní�‰ê·  성ì �별 리스트n";		// ì„ íƒ�ë�œ 메뉴를 화면ì—� ìœë ¥í•¨
	prt_all();		// 화면ì—� ë�°ì�´í„°ë¥¼ ìœë ¥í•¨
}

void sub_menu()		// 1, 2번 메뉴ì�˜ 경우 서브 메뉴를 입력받아 ì„ íƒ�ë�œ 메뉴를 ìœë ¥í•˜ëŠ” 함수
{
	cout << "n1) 국어n2) �어n3) 수학n어떤 과목� 보시겠습니까? ";
	cin >> select;		// 서브메뉴를 ìœë ¥í•˜ê³  사용ìž�로부터 입력받ì�Œ
	if (select < 1 || select > 3)
		error();		// 잘못 입력하였ì�„ 경우 ì—�러메시지를 ìœë ¥í•˜ëŠ” 함수 호ìœ
	else	cout << endl << (select == 1 ? "국어" : (select == 2 ? "�어" : "수학")) << " 목�n"
			<< " ì�´ë¦„t    학번tì �수n";	// ì„ íƒ�ë�œ 메뉴를 ìœë ¥í•˜ê³ 
}							// 공통ì �으로 들어가는 ë�¼ì�¸ì�„ ìœë ¥í•¨

void prt_select()	// 1, 2번 메뉴ì�˜ 경우 서브 메뉴ì—� ë”°ë�¼ 화면ì—� 결과를 ìœë ¥í•¨
{
	for (int i = 0 ; i < students ; i++)
		cout << sort_name[i] << "t" << "  " << sort_stats[i][0]	// ì�´ë¦„ê³¼ 학번 ìœë ¥
			<< "t " << sort_stats[i][select] << endl;		// 성ì � ìœë ¥
}

void sort(int i, int j)		// 사용�� 선�� 따� i, j 변수를 전달받아 정렬함
{
	for (int k = 0 ; k < 7 ; k++)	{		// ��터� �름� 정렬함
		sort_name[students][k] = sort_name[j][k];
		sort_name[j][k] = sort_name[i][k];
		sort_name[i][k] = sort_name[students][k];
	}
	for (k = 0 ; k < 4 ; k++)		{		// ��터� 학번과 성�� 정렬함
		sort_stats[students][k] = sort_stats[j][k];
		sort_stats[j][k] = sort_stats[i][k];
		sort_stats[i][k] = sort_stats[students][k];
	}
}

void avr()		// í�‰ê· ì�„ ì‚°ìœí•˜ëŠ” 함수
{
	for (int i = 0 ; i < students ; i++)	// í�‰ê·  ì‚°ìœ
		avr_ind[i] = (sort_stats[i][1] + sort_stats[i][2] + sort_stats[i][3]) / 3.0;
	if (select == 4)							// 선�� 메뉴가 4번� 경우
		for (int i = 1 ; i < students ; i++)
			for (int j = 0 ; j < i ; j++)
				if (avr_ind[i] > avr_ind[j]){		// �균 성�� 따�
					sort(i, j);			// ��터� 정렬� 실행하고
					avr_ind[students] = avr_ind[j];	// �균 성�� 따로 정렬함
					avr_ind[j] = avr_ind[i];
					avr_ind[i] = avr_ind[students];
				}
}

void prt_all()		// 3, 4번 메뉴를 ì„ íƒ�í–ˆì�„ 경우 ê³µë�™ìœ¼ë¡œ 사용하는 ìœë ¥ 함수
{
	cout << " ì�´ë¦„t    학번têµ­ì–´tì˜�ì–´t수학tí�‰ê· ttí•™ì �n";	// 필드명ì�„ ìœë ¥
	for (int i = 0 ; i < students ; i++)	{
		cout << sort_name[i] << "t  ";			// ì�´ë¦„ì�„ ìœë ¥í•¨
		for (int j = 0 ; j < 4 ; j++)
			cout << sort_stats[i][j] << "t ";		// 학번과 성ì �ì�„ ìœë ¥í•¨
		cout << avr_ind[i] << "     t ";
		grade(i);						// í•™ì �ì�„ ì‚°ìœí•˜ëŠ” 함수 í�¬ìœ
		sum_avr += avr_ind[i];				// �균� 합� 누�연산함
		for (j = 0 ; j < 3 ; j++)
			sum_sub[j] += sort_stats[i][j + 1];		// � 과목� 합계를 누� 연산함
	}
	cout << "n/��/ttt";
	for (i = 0 ; i < 3 ; i++)
		cout << sum_sub[i] << "t";			// ê°� 과목ì�˜ í•©ì�„ ìœë ¥í•¨
	cout << sum_avr << "n/í�‰ê· /ttt ";		// í�‰ê· ë“¤ì�˜ í•©ì�„ ìœë ¥í•¨
	for (i = 0 ; i < 3 ; i++){				// � 과목� �균과 � �균� 변수를 사용하지 않고
		cout << sum_sub[i] / students << "t ";	// 과목과 í�‰ê· ì�˜ 합계 변수를 ì�´ìš©í•˜ì—¬ ìœë ¥
		sum_sub[i] = 0;				// ê°� 과목ì�˜ í�‰ê· ì�„ ìœë ¥í•œ ë’¤
	}						// � 과목� 합계를 초기화 함		
	cout << sum_avr / students <<"nn";			// í�‰ê· ë“¤ì�˜ í�‰ê· ì�„ ìœë ¥í•œ ë’¤
	sum_avr = 0;					// �균들� 합� 초기화 함
}

void grade(int i)		// í•™ì �ì�„ ì‚°ìœí•˜ëŠ” 함수
{
	if (avr_ind[i] >= 95) cout << "A+n";		// �균 95� ��� A+
	else if (avr_ind[i] >= 90) cout << "An";	//	90	  A
	else if (avr_ind[i] >= 85) cout << "B+n";	//	85	  B+
	else if (avr_ind[i] >= 80) cout << "Bn";	//	80	  B
	else if (avr_ind[i] >= 75) cout << "C+n";	//	75	  C+
	else if (avr_ind[i] >= 70) cout << "Cn";	//	70	  C
	else if (avr_ind[i] >= 65) cout << "D+n";	//	65	  D+
	else if (avr_ind[i] >= 60) cout << "Dn";	//	60	  D
	else cout << "Fn";				//	60ì � 미만ì�€ F 를 ê°�ê°� ìœë ¥ì¼€ 함
}

void error()		// 메뉴를 잘못 입력하였ì�„ 경우 ì—�러 메시지를 ìœë ¥í•˜ëŠ” 함수
{
	cout << "n잘못 입력하셨습니다.nn";
}
----
TermProject
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:11
Processing time 0.0110 sec