성적프로그램 질문들어갑니다!! 구조체+배열+파일+동적할당
흰우유
성적프로그램!!!!! 이름,학번,C언어,영어,수학점수를 입력하여
총점,그 사람의 평균, 과목별 평균, 등수를 출력, 파일입출력까지...내일이 기말고사 인데요. 열심히 공부 중인데 파일을 이용하는건 fprintf랑 fscanf만 알겠고,
나머지는 외워야 할것 같아요... 이 성적프로그램을 돌리면 제대로 되지만 등수랑 과목별평균은
쓰레기값이 나옵니다. 소스 좀 수정해주세요...
질문 내용 :
#include stdio.h
#include stdlib.h
#define StudentNo 3 //3명만 하자.
struct Student //이름이랑 학번은 Student구조체로 선언
{
char name[10];
int ID;
} st[3];
struct Result //각과목점수랑 총점, 평균, 등수까지는 Result구조체로 선언
{
int clang;
int eng;
int math;
int *clangmean;
int *engmean;
int *mathmean;
int total;
int avg;
int avg2;
int rank;
} re[3];
void TotalAvg(struct Student st[3], struct Result re[3], int num)
{
re[num].total = re[num].clang + re[num].math + re[num].eng;
re[num].avg = (re[num].total/3);
//과목별 평균은 구조체로 어떠케 하지?
re[num].clangmean += re[num].clang;
re[num].engmean += re[num].eng;
re[num].mathmean += re[num].math;
}
//구조체 선언한 변수들을 모두 끌고 온거임.
void Rank(struct Student st[3], struct Result re[3], int num)
{
int temp, i, j;
int cnt = 0;
for(i=0; inum; i++){
re[i].avg2 = re[i].avg;
}
for(i=0; inum; i++){
re[i].rank = i+1;
}
for(i=0; inum; i++)
{
for(j=num; ji; j--)
{
if( re[j].avg2 re[j-1].avg2 )
{
temp = re[j-1].avg2;
re[j-1].avg2 = re[j].avg2;
re[j].avg2 = temp;
}
}
}
while(inum)
{
for(j=0; jnum; j++)
{
if(re[j].avg == re[i].avg2)
{
re[j].rank = i+1;
cnt++;
}
}
i = i + cnt;
cnt = 0;
}
}
void main(void)
{
int i;
struct Student st[StudentNo];
struct Result re[StudentNo];
FILE *fp;
char *filename; //동적할당으로 해보자.
filename = (char *)malloc(sizeof(char)*10); //1바이트*10=10바이트로 동적 할당.
printf(File name : );
scanf(%s, filename);
fp = fopen(filename, w);
if(fp==NULL)
{
printf(Open error!\n);
}
for(i=0; iStudentNo; i++)
{
//fflush(stdin);
printf(학생의 이름 : );
scanf(%s, &st[i].name);
printf(%s 학생의 학번 : , st[i].name);
scanf(%d, &st[i].ID);
printf(%s 학생의 C언어점수 : , st[i].name);
scanf(%d, &re[i].clang);
printf(%s 학생의 영어점수 : , st[i].name);
scanf(%d, &re[i].eng);
printf(%s 학생의 수학점수 : , st[i].name);
scanf(%d, &re[i].math);
TotalAvg(st, re, i);
Rank(st, re, i);
}
printf(====================================================================\n);
fprintf(fp, ====================================================================\n);
printf(이름\t학번\t\tC언어\t영어\t수학\t총점\t평균\t등수\n);
fpribsp;fprintf(fp,이름\t학번\t\tC언어\t영어\t수학\t총점\t평균\t등수\n);
printf(====================================================================\n);
fprintf(fp, ====================================================================\n);
for(i=0; iStudentNo; i++)
{
printf(%s\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n, st[i].name, st[i].ID, re[i].clang, re[i].eng, re[i].math, re[i].total, re[i].avg, re[i].rank);
fprintf(fp,%s\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n, st[i].name, st[i].ID, re[i].clang, re[i].eng, re[i].math, re[i].total, re[i].avg, re[i].rank);
}
printf(====================================================================\n);
fprintf(fp, ====================================================================\n);
printf( x\t x\t%d\t%d\t%d\t x\t x\t x\t\n, re[3].clangmean, re[3].engmean, re[3].mathmean);
fprintf(fp, x\t x\t%d\t%d\t%d\t x\t x\t x\t\n, re[3].clangmean, re[3].engmean, re[3].mathmean);
fclose(fp);
free(filename);
}
-
꽃짱구
잘못봤네요... ㅎㅎ;
-
노랑이
저 소스가 원활하지 않아서 test14.txt파일은 생성이 안되던데요?ㅜㅜ
-
빛길
txt파일 데이타가 없네요... 직접 코딩하기에는 ㅠㅠ 올려주시면 쉽게 볼수 있을듯
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2694503 | 프로그램 연산 후 바로 종료되는 현상 (6) | Judicious | 2025-05-11 |
2694450 | while문질문입니다. (1) | 허리품 | 2025-05-11 |
2694420 | C언어 질문할게요(유니코드,자료형,버퍼,캐스트연산자) | 은새 | 2025-05-11 |
2694370 | 내일까진데 함수호출 제발 도와주세요!!!!!!!!!11 | 들찬 | 2025-05-10 |
2694339 | putchar()의 괄호 안에 int c=10;로 전에 선언된 c를 넣으면 안되는 이유에서 제가 생각한 것이 그 이유가 되는지 확인하고 싶습니다. (3) | 미르 | 2025-05-10 |
2694316 | 이 코드 어디가 잘못되었는지 고수분들 ㅠㅠ (2) | 나빛 | 2025-05-10 |
2694285 | 언어 공부하는 과정 좀 추천해주세요! (1) | 아빠몬 | 2025-05-09 |
2694258 | 카운터.. 질문입니다. (4) | 하늘빛눈망울 | 2025-05-09 |
2694229 | 단순한 질문이요 (8) | 여름 | 2025-05-09 |
2694202 | 용돈을 가지고 할 수 있는 일을 여러가지로 출력하는 방법 좀 알려주세요! (2) | 미나 | 2025-05-09 |
2694145 | 화면깜빡임을 없애고 싶은데요... (1) | 어서와 | 2025-05-08 |
2694069 | unsigned 질문입니다. | 힘차 | 2025-05-07 |
2694012 | 전공 비전공자 개발자 (10) | 말글 | 2025-05-07 |
2693984 | 오버로딩이 무엇인가요? (2) | 헛매질 | 2025-05-07 |
2693956 | PlaySound재생이 안됩니다!(C에 음악넣기) | 지존 | 2025-05-06 |
2693928 | &와 *의 사용에 관한 명확한 이해 | 제나 | 2025-05-06 |
2693903 | 반복문 설명좀요 ㅠㅠ (2) | 란새 | 2025-05-06 |
2693869 | stdio.h 는 왜 쓰는건가요? (1) | 큰꽃들 | 2025-05-06 |
2693842 | 포인터 변수의 주소값끼리 더하는 것에 대해서 질문드립니다. (1) | 진솔 | 2025-05-05 |
2693811 | 소수 출력;;;; | 화이트캣 | 2025-05-05 |