~cpp #include <iostream> #include <cstdlib> using namespace std; struct student { char name[20]; int number; int kor; int eng; int math; int total; double ave; char * grade; }; // ๊ตฌ์กฐ์ฒด ์ ์ธ student data[20] = { { "๊ณ ์ฌ์ " ,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, 95, 88, 80 }, { "๊น์ค์ญ" ,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 } }; // ๋ฐ์ดํฐ ๊ฐ // ํจ์ ์ ์ธ void sort (int *); void copy(); int input(); void error_message(); void showmenu(); void showsubmenu(); void pass(); void grade_(); void choose_1(); void choose_2(); void choose_3(); void choose_4(); void result_1(student l[] , int *); void result_2(student m[]); student temp, copy_data[20]; int select, i, j, check=0; int main() { for (i = 0 ; i <= 19 ; i++ ){ data[i].total = data[i].kor + data[i].eng + data[i].math; data[i].ave = data[i].total / 3; } grade_(); while (1) { if (check == 0 ) { showmenu(); } switch (input()) { case 1 : choose_1(); check = 0; break; case 2 : choose_2(); check = 0; break; case 3 : choose_3(); check = 0; break; case 4 : choose_4(); check = 0; break; case 5 : return 0; break; default : error_message(); check = 1; break; } } } //////////////////////////////////////////////////////////// // ๋ฉ์ธ ํจ์์ ๋ // //////////////////////////////////////////////////////////// ////////////////// ๋ฉ์ธ์ง ์ถ๋ ฅ ํจ์ ////////////////// void showmenu() { cout << "\tโ ๋ฉ๋ด โ" << endl << "1) ๊ณผ๋ชฉ๋ณ ์ ๋ ฅ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ " << endl << "2) ๊ณผ๋ชฉ๋ณ ์ฑ์ ์ ๋ฆฌ์คํธ " << endl << "3) ํ์ ์ ๊ณผ๋ชฉ ์ ๋ ฅ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ " << endl << "4) ํ์ ์ ๊ณผ๋ชฉ ์ฑ์ ์ ๋ฆฌ์คํธ " << endl << "5) ์ข ๋ฃ " << endl << endl << "๋ฉ๋ด๋ฅผ ์ ํํ์ธ์ -> "; } void showsubmenu() { cout << "\tโ๊ณผ๋ชฉ ์ ํ ๋ฉ๋ดโ" << endl << "1) ๊ตญ์ด" << endl << "2) ์์ด" << endl << "3) ์ํ" << endl << "๊ณผ๋ชฉ์ ์ ํํ์ธ์ -> "; } void error_message() { cout << "๋ค์ ์ ๋ ฅํ์ธ์ -> "; } /////////////// ์ ํ ๋ฉ๋ด ํจ์ //////////////// void choose_1() // 1๋ฒ ์ ํ { system ("cls") ; showsubmenu(); while (1) { switch (input()) { case 1 : cout << "์ด๋ฆ\t๋ฒํธ\t๊ตญ์ด" << endl; result_1(data, &data[0].kor); pass(); return; case 2 : cout << "์ด๋ฆ\t๋ฒํธ\t์์ด" << endl; result_1(data, &data[0].eng); pass(); return; case 3 : cout << "์ด๋ฆ\t๋ฒํธ\t์ํ" << endl; result_1(data, &data[0].math); pass(); return; default : error_message(); break; } } } void choose_2() // 2๋ฒ ์ ํ { system ("cls") ; copy(); showsubmenu(); while (1) { switch (input()) { case 1 : system ("cls"); sort(©_data[0].kor); cout << "์ด๋ฆ\t๋ฒํธ\t๊ตญ์ด" << endl; result_1(copy_data , ©_data[0].kor); pass(); return; case 2 : system ("cls"); sort(©_data[0].eng); cout << "์ด๋ฆ\t๋ฒํธ\t์์ด" << endl; result_1(copy_data , ©_data[0].eng); pass(); return; case 3 : system ("cls"); sort(©_data[0].math); cout << "์ด๋ฆ\t๋ฒํธ\t์ํ" << endl; result_1(copy_data , ©_data[0].math); pass(); return; default : error_message(); break; } } } void choose_3() // 3๋ฒ ์ ํ { system ("cls"); result_2(data); pass(); } void choose_4() // 4๋ฒ ์ ํ { copy(); system ("cls"); sort(©_data[0].total); result_2(copy_data); pass(); } //////////////// ๊ฒฐ๊ณผ ์ถ๋ ฅ ํจ์๋ค //////////////////// void result_1(student l[] , int * n) { for (i = 0 ; i <= 19 ; i++ ) cout << l[i].name << "\t" << l[i].number << " " << *(n+(i*14)) << endl; } void result_2(student m[]) { cout << "์ด๋ฆ\t๋ฒํธ\t๊ตญ์ด\t์์ด\t์ํ\t์ด์ \tํ๊ท \t๋ฑ๊ธ" << endl; for (i = 0 ; i <= 19 ; i++) { cout.precision(3); cout.setf(ios_base::showpoint); cout << m[i].name << "\t" << m[i].number << " "<< m[i].kor << "\t" << m[i].eng << "\t" << m[i].math << "\t" << m[i].total << "\t" << m[i].ave << "\t" << m[i].grade << endl; } } ///////////////// ๊ทธ ๋ฐ์ ํจ์๋ค ///////////////////// void sort(int * x) // ์ํธ ํจ์ { for (i = 1 ; i <= 19 ; i++) { for (j = 19 ; j >= i ; j--) { if ( *(x+j*14) >= *(x+(j-1)*14) ) { temp = copy_data[j]; copy_data[j] = copy_data[j-1]; copy_data[j-1] = temp; } } } } void copy() // ๋ฐ์ดํฐ ํผ์์ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ฐ์ดํฐ ์นดํผ { for (int i = 0 ; i <= 19 ; i++ ) copy_data[i] = data[i]; } int input() // ์ฌ๋ฐ๋ฅธ ์ ๋ ฅ์ ์ํ ์ ๋ ฅํจ์ { cin.clear(); while (!(cin >> select)) { cin.clear(); while (cin.get() != '\n') continue; error_message(); } return select; } void grade_() // ๋ฑ๊ธ์ ์ ๋ ฅํ๋ ํจ์ { for (i = 0 ; i <= 19 ; i++ ) { if ( data[i].ave >= 95 && data[i].ave <=100) data[i].grade = "a+"; else if ( data[i].ave >= 90 && data[i].ave < 95) data[i].grade = "a"; else if ( data[i].ave >= 85 && data[i].ave < 90) data[i].grade = "b+"; else if ( data[i].ave >= 80 && data[i].ave < 85) data[i].grade = "b"; else if ( data[i].ave >= 75 && data[i].ave < 80) data[i].grade = "c+"; else if ( data[i].ave >= 70 && data[i].ave < 75) data[i].grade = "c"; else if ( data[i].ave >= 65 && data[i].ave < 70) data[i].grade = "d+"; else if ( data[i].ave >= 60 && data[i].ave < 65) data[i].grade = "d"; else if ( data[i].ave <= 59) data[i].grade = "f"; } } void pass() // ๋ฐ๋ก ๋์ด๊ฐ์ง ์๊ธฐ ์ํ ํจ์ { cout << "๊ณ์ ํ๋ ค๋ฉด Enter ํค๋ฅผ ๋๋ฅด์ญ์์ค. "; cin.get(); while (cin.get() != '\n') continue; system ("cls"); }