~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");
}