[C] 전교 성적 프로그램
//3.분포 초등학교 전교 3학급의 학생의 성적을 입력 받아 총점,
//평균을 구하고 석차를 구한다음 각학급의 전교에서 등급을 구하고
//그 등급의 일등과 꼴지 학급을 선정하는 프로그램
#include<iostream.h>
void main()
{
int num[3];
int sungjuk[3][50][7]={0,};//반,학생수,데이터
int ban_grade[3][3]={0,};//반,반총합,반등급
for(int ban=0;ban<3;ban++)
{
ban_grade[ban][0]=ban+1;//반번호 넣음
cout<<"분포 초등학교 1학년"<<ban+1<<"반 학생수는 ? (최대 50명)";
cin>>num[ban];
char subject[3][6]={"산수 ","국어 ","과학 "};
//성적입력
for(int a=0;a<num[ban];a++)
{
sungjuk[ban][a][5]=a+1;//개인번호 넣음
cout<<a+1<<"번째 학생"<<endl;
for(int b=0;b<3;b++)
{
cout<<subject[b];
cin>>sungjuk[ban][a][b];
}
}
//총합과 평균
for(int c=0;c<num[ban];c++)
{
for(int d=0;d<3;d++)
{
sungjuk[ban][c][3]+=sungjuk[ban][c][d];//개인총합
}
sungjuk[ban][c][4]=sungjuk[ban][c][3]/3;//개인평균
ban_grade[ban][1]+=sungjuk[ban][c][3];//반총합
}
//석차대로 정렬
int temp[7];
for(int e=0;e<num[ban];e++)
{
for(int f=e;f<num[ban];f++)
{
if(sungjuk[ban][f][3]>sungjuk[ban][e][3])
{
for(int g=0;g<7;g++)
{
temp[g]=sungjuk[ban][e][g];
sungjuk[ban][e][g]=sungjuk[ban][f][g];
sungjuk[ban][f][g]=temp[g];
}
}
}
sungjuk[ban][e][6]=e+1; //석차 넣음
}
//번호대로 정렬
int temp2[7];
for(int h=0;h<num[ban];h++)
{
for(int i=h;i<num[ban];i++)
{
if(sungjuk[ban][h][5]>sungjuk[ban][i][5])
{
for(int j=0;j<7;j++)
{
temp2[j]=sungjuk[ban][h][j];
sungjuk[ban][h][j]=sungjuk[ban][i][j];
sungjuk[ban][i][j]=temp2[j];
}
}
}
}
}
for(ban=0;ban<3;ban++)
{
//반등급대로 정렬
int ban_temp[3];
for(int ban_f=ban;ban_f<3;ban_f++)
{
if(ban_grade[ban_f][1]/num[ban]>ban_grade[ban][1]/num[ban])
{
for(int ban_g=0;ban_g<3;ban_g++)
{
ban_temp[ban_g]=ban_grade[ban][ban_g];
ban_grade[ban][ban_g]=ban_grade[ban_f][ban_g];
ban_grade[ban_f][ban_g]=ban_temp[ban_g];
}
}
ban_grade[ban][2]=ban+1; //등급 넣음
}
}
for(ban=0;ban<3;ban++)
{
//반번호대로 정렬
int ban_temp2[3];
for(int ban_i=ban;ban_i<3;ban_i++)
{
if(ban_grade[ban_i][0]>ban_grade[ban][0])
{
for(int ban_j=0;ban_j<3;ban_j++)
{
ban_temp2[ban_j]=ban_grade[ban][ban_j];
ban_grade[ban][ban_j]=ban_grade[ban_i][ban_j];
ban_grade[ban_i][ban_j]=ban_temp2[ban_j];
}
}
}
}
cout<<endl<<"번호 산수 국어 과학 총점 평균 석차"<<endl;
for(ban=0;ban<3;ban++)
{
cout<<"<"<<ban+1<<"반>"<<endl;
for(int k=0;k<num[ban];k++)
{
cout<<sungjuk[ban][k][5]<<"번 ";
for(int l=0;l<5;l++)
{
cout<<sungjuk[ban][k][l]<<" ";
}
cout<<sungjuk[ban][k][6]<<"등"<<endl;
}
cout<<"반평균 "<<ban_grade[ban][1]/num[ban]<<"점 반등급 "<<ban_grade[ban][2]<<"등급"<<endl;
}
}
