파일로 입력받아서 성적구하기 잘안되요..
널위해
test.txt 파일을 불러와서 작업하는건데요
이게 test.txt의 내용입니다.
『 티파니 100 100
이나영 90 85
한지민 80 95
전지현 95 63
송혜교 55 79
박용선 10 15
배성우 23 47
이명박 4 2
황인철 98 98
박영순 1 1 』
첫번째 숫자가 국어점수고, 두번째가 영어점수에요.
조건은10명 성적을 받아서 국어점수와 영어점수의 합을 구하고
합으로 버블정렬 이용해서 내림차순으로 정렬한후에
등수를 찍어주고 등수 순서로 출력하고 같은 점수가 있을경우에는
2등이 두명이면 둘다 2등으로 출력하고 3등은 건너뛰고 그다음 점수가 4등이 되어야 해요
제가 작업한 소스입니다.
#includestdio.h
#includestring.h
#define OUTPUT print.txt
void main() {
struct people {
char name[10];
int kor;
int eng;
int sum;
int rank;
};
int i, j;
struct people man[10];
FILE *in, *out;
in=fopen(test.txt, r);
out=fopen(print.txt, w);
for(i=0; i10; i++){
fscanf(in, %s %d %d, &man[i].name, &man[i].kor, &man[i].eng);
man[i].sum=man[i].kor+man[i].eng;
}
for(i=0; i10; i++){
man[i].rank=1;
for(j=0; j10; j++){
if(man[i].rank man[j].rank)
man[i].rank++;
}
}
fprintf(out, 이름 국어 영어 합계 등수\n);
for(i=1; i=10; i++){
for(j=0; j10; j++){
if(man[i].rank==i)
fprintf(out, %s %3d %3d %3d %d\n, man[i].name, man[i].kor, man[i].eng, man[i].sum, man[i].rank);
}
}
}
입력받아서 합계구해서 출력까진 되는데요
등수 구하는거에서 3시간 헤매다가 도저히 안되서 이렇게 올립니다.ㅠㅠ
잘못된거 수정해 주시구요
힌트주지 말구 그냥 해주세요 ㅠㅠ
아침에 내야되는 레포트인데...
꼭 부탁드립니다!!!
-
힘차
티파니 100 점, 명박이 4 점(이상하게 명박이 국어점수가 영어점수보다 높으네요, 명박이 국어 못하는데) ,
그런데 박영순은 누구길래 1 점 밖에 안 줬어요 .. -
은송이
for(i=0; i10; i++){
man[i].rank=1;
for(j=0; j10; j++){
if(man[i].rank man[j].rank) // 합계하고 비교를 해야하겠지요.
man[i].rank++;
}
}
== if ( man[i].sum man[j].sum ) // 으로요
rank 로 비교하니 자꾸 이상하게 되는 겁니다.