제가 숙제중인데 지금 원하는 결과가 안나옵니다.
구조체 배열의 총점, 평균을 각각 구하는 함수를 작성하시오.
성적순으로 정렬하여 학생의 이름, 국어, 영어, 수학, 총점, 평균을 출력하는 함수를 작성하시오
문제가 이건데요. 결과가 저렇게 나오거든요?
원하는 결과는 토탈or 평균성적순으로 순서가 나오게 해야 하는데 왜 저렇게 나오는걸까요?
친구랑 머리 대고 짰는데 친구는 오래전에 c그만두고 저는 완전 깡통이라 모르겠습니다.
여기서 뭘 수정해야 제대로 나올까요?
#include <stdio.h>
struct student
{
char name[10];
int kor, eng, math;
int tot;
double avg;
};
typedef struct student STUDENT;
void Read_Data(STUDENT *student);
void Print_Out(STUDENT *student);
void Cal_Sum(STUDENT *student);
void Cal_Avr(STUDENT *student);
int main()
{
STUDENT stu[6];
printf("Name\\tKor\\tEng\\tMath\\tTot\\tAvg\\n");
printf("--------------------------------------------------\\n");
Read_Data(stu);
Print_Out(stu);
Cal_Sum(stu);
Cal_Avr(stu);
return 0;
}
void Read_Data(STUDENT *student)
{
FILE* inFile;
int i;
inFile = fopen("data.txt", "rt");
for (i=0;i<5;i++)
{
fscanf(inFile, "%s\\n%d\\n%d\\n%d\\n", &student[i].name,
&student[i].kor, &student[i].eng, &student[i].math);
}
fclose(inFile);
}
void Cal_Sum(STUDENT *student)
{
int i;
for (i=0;i<5;i++)
{
(student+i)->tot = (student+i)->kor + (student+i)->eng + (student+i)->math;
}
}
void Cal_Avr(STUDENT *student)
{
int i;
for (i=0;i<5;i++)
{
student[i].avg = (double)student[i].tot / 3.0;
}
}
void Print_Out(STUDENT *student)
{
int i;
int j;
for (i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
{
if(student[i].tot<student[j].tot)
{
student[5]=student[i];
student[i]=student[j];
student[j]=student[5];
}
}
for(i=0;i<5;i++)
{
printf("%s\\t%d\\t%d\\t%d\\t%d\\t%.1lf\\n", student[i].name, student[i].kor,
student[i].eng, student[i].math, student[i].tot, student[i].avg);
}
printf("\\n");
}
}
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.