1. 程式人生 > >結構體的使用及sort函式

結構體的使用及sort函式

#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
struct student
{
    int chi;
    int mat;
    int eng;
    int sum;
    int num;
}a[310];
bool complare(student a,student b)
{
 if(a.sum > b.sum) return 1;
 else if(a.sum < b.sum) return 0;
 else{
    if(a.chi > b.chi) return 1;
    else if(a.chi < b.chi)return 0;
    else{
        if(a.num < b.num) return 1;
        else return 0;}
 }
}
/*bool complare(student a,student b)
{
        if(a.sum != b.sum){
            if(a.sum > b.sum) return 1;
            else return 0;
        }
        else {
            if(a.chi != b.chi){
                if(a.chi > b.chi) return 1;
                else return 0;
            }
            else{
                if(a.num < b.num)return 1;
                else return 0;
            }
        }第二種表示方法
        */
int main()
{
    int n;
    scanf("%d",&n);
    for(int t = 0;t < n; t++){
     scanf("%d %d %d",&a[t].chi,&a[t].eng,&a[t].mat);
     a[t].sum = a[t].chi + a[t].eng + a[t].mat; //計算sum
     a[t].num = t + 1;}
     sort(a,a+n,complare);//按照上面規則比較大小
    for(int i=0;i < 5;i++)
        cout << a[i].num << ' ' <<a[i].sum << endl;
    return 0;
}