성적조회기

#include

#include

#include

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);

}

코멘트

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.