/*************************************************************************
* author:crazy_石头
* algorithm:bubble_sort
* date:2013/10/20
* 程序功能:对学生信息进行排序
**************************************************************************/
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=5;
struct Stu
{
int num;
char name[maxn];
char gendar[maxn];
int grade1;
int grade2;
int grade3;
int aver;
}stu[maxn];
inline void debug()
{
puts("Oh,god,where on earth is wrong?");
}
inline void bubble_sort1(Stu A[],int n)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1-i;j++)
{
if(A[j].num>A[j+1].num)
{
Stu tmp=A[j+1];
A[j+1]=A[j];
A[j]=tmp;
}
}
}
}
inline void bubble_sort2(Stu A[],int n)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1-i;j++)
{
if(strcmp(A[j].name,A[j+1].name)>0)
{
Stu tmp=A[j+1];
A[j+1]=A[j];
A[j]=tmp;
}
}
}
}
inline void bubble_sort3(Stu A[],int n)
{
for(int i=0;i<n;i++)
A[i].aver=(A[i].grade1+A[i].grade2+A[i].grade3)/3;
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1-i;j++)
{
if(A[j].aver>A[j+1].aver)
{
Stu tmp=A[j+1];
A[j+1]=A[j];
A[j]=tmp;
}
}
}
}
inline void solve(Stu A[],int n)
{
float res1=0,res2=0,res3=0;
for(int i=0;i<n;i++)
{
res1+=A[i].grade1;
}
printf("这%d名同学第一门课程的平均成绩是:%.2lf\n",n,res1/n);
for(int i=0;i<n;i++)
{
res2+=A[i].grade2;
}
printf("这%d名同学第二门课程的平均成绩是:%.2lf\n",n,res2/n);
for(int i=0;i<n;i++)
{
res3+=A[i].grade3;
}
printf("这%d名同学第三门课程的平均成绩是:%.2lf\n",n,res3/n);
}
int main()
{
freopen("student.txt","r",stdin);
for(int i=0;i<5;i++)
scanf("%d%s%s%d%d%d",&stu[i].num,stu[i].name,stu[i].gendar,&stu[i].grade1,&stu[i].grade2,&stu[i].grade3);
printf("按学号排序结果如下:\n");
bubble_sort1(stu,maxn);
for(int i=0;i<5;i++)
printf("%d\t%s\t%s\t%3d%3d%3d\n",stu[i].num,stu[i].name,stu[i].gendar,stu[i].grade1,stu[i].grade2,stu[i].grade3);
printf("按姓名排序结果如下:\n");
bubble_sort2(stu,maxn);
for(int i=0;i<5;i++)
printf("%d\t%s\t%s\t%3d%3d%3d\n",stu[i].num,stu[i].name,stu[i].gendar,stu[i].grade1,stu[i].grade2,stu[i].grade3);
printf("按平均成绩排序结果如下:\n");
bubble_sort3(stu,maxn);
for(int i=0;i<5;i++)
printf("%d\t%s\t%s\t%3d%3d%3d%3d\n",stu[i].num,stu[i].name,stu[i].gendar,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].aver);
solve(stu,maxn);
return 0;
}