#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct {
    char name[10];
    double s[3];
} data;

double average(data);
void best(data *,int);
void nameprinting(data,int);
void score(char*,double);
void namesearch(data*,char*);
int rank(data *,int);

int main(int argc, char **argv){
    FILE *inputdata;
    inputdata=fopen(argv[1],"r");
    data a[10];
    int i;char temp[20];
    for(i=0;i<10;i++){
        fscanf(inputdata,"%s\n%lf,%lf,%lf\n",a[i].name,&a[i].s[0],&a[i].s[1],&a[i].s[2]);
    }
    if(atoi(argv[2])==1){
        char n[10];strcpy(n,argv[3]);
        namesearch(a,n);
    }
    else if(atoi(argv[2])==2){
        best(a,atoi(argv[3]));
    }
    else{
        printf("error!\n");
    }
return 0;
}

void namesearch(data *a, char *n){
    int i;
    for(i=0;i<10;i++){
        if(strcmp(a[i].name,n)==0){
            nameprinting(a[i],rank(a,i));
        }
    }
}

void nameprinting(data a,int ranking){
    int f;
    char a1[2],a2[2],a3[2];
        score(a1,a.s[0]);
        score(a2,a.s[1]);
        score(a3,a.s[2]);
    printf("%s : %lf %s\t%lf %s\t%lf %s\t%lf\t%d\n",a.name,a.s[0],a1,a.s[1],a2,a.s[2],a3,average(a),ranking);
}

void score(char *sco,double a){
    if(a<60.0){
        strcpy(sco,"F");
        return;
    }
    else if(a<70.0){
        strcpy(sco,"D");
        return;
    }
    else if(a<80.0){
        strcpy(sco,"C");
        return;
    }
    else if(a<90.0){
        strcpy(sco,"B");
        return;
    }
    else {
    strcpy(sco,"A");
    }
    return;
}

double average(data a){
    return (a.s[0]+a.s[1]+a.s[2])/3.0;
}
int rank(data *a,int i){
    int ranking=1;
    int j;
    for(j=0;j<10;j++){
        if(average(a[j])>average(a[i])){
            ranking++;
    }
}
    return ranking;
}
void best(data *a,int i){
    int j;
    data temp=a[0];
    for(j=1;j<10;j++){
        if(a[j].s[i]>temp.s[i]){
            temp=a[j];
        }
    }
    nameprinting(temp,1);   
}

by snowall 2007. 11. 28. 23:49