#include <stdio.h>
struct student_t{
char name[20];
int kor;
int eng;
int mat;
int total;
float aver;
char grad;
};
void fun_inputjumsu(struct student_t * stulist, int size);
void fun_printstudent(const struct student_t * stulist, int size);
void fun_input_sum(struct student_t * stulist, int size);
void fun_input_aver(struct student_t * stulist, int size);
void fun_printresult(const struct student_t * stulist, int size);
void fun_input_grad(struct student_t * stulist, int size);
void fun_filewrite(struct student_t * stulist, int size);
void fun_fileread(struct student_t * stulist, int size);
int main(){
struct student_t stulist[4] = { 0 };
fun_fileread(stulist, 4);
// fun_inputjumsu(stulist, 4);
fun_input_sum(stulist, 4);
fun_input_aver(stulist, 4);
fun_input_grad(stulist, 4); //<==================
fun_printstudent(stulist, 4);
fun_printresult(stulist, 4);
fun_filewrite(stulist, 4);
return 0;
}
void fun_fileread(struct student_t * stulist, int size)
{
FILE *in = fopen("data.txt", "r");
if (in == NULL)
{
printf("파일 열기 에러\n");
return;
}
//==============================================
for (int i = 0; i < size; i++)
{
fscanf(in, "%10s%10d%10d%10d",
stulist[i].name, &stulist[i].kor,
&stulist[i].eng, &stulist[i].mat);
}
//==============================================
fclose(in);
}
void fun_filewrite(struct student_t * stulist, int size)
{
FILE *out = fopen("data.txt", "w");
if (out == NULL)
{
printf("파일 열기 에러\n");
return;
}
//==============================================
for (int i = 0; i < size; i++)
{
fprintf(out, "%10s%10d%10d%10d\n",
stulist[i].name, stulist[i].kor,
stulist[i].eng, stulist[i].mat);
}
//==============================================
fclose(out);
}
void fun_input_grad(struct student_t * stulist, int size)
{
int i;
for (i = 0; i < size; i++)
{
if (stulist[i].aver >= 90.0f && stulist[i].aver <= 100.0f)
{
stulist[i].grad = 'A';
}
else if (stulist[i].aver >= 80.0f && stulist[i].aver <= 89.0f)
{
stulist[i].grad = 'B';
}
else if (stulist[i].aver >= 70.0f && stulist[i].aver <= 79.0f)
{
stulist[i].grad = 'C';
}
else if (stulist[i].aver >= 60.0f && stulist[i].aver <= 69.0f)
{
stulist[i].grad = 'D';
}
else
{
stulist[i].grad = 'F';
}
}
}
void fun_printresult(const struct student_t * stulist, int size)
{
int i;
float kor_sum = 0, eng_sum = 0, mat_sum = 0;
for (i = 0; i < size; i++)
{
kor_sum = kor_sum + stulist[i].kor;
eng_sum = eng_sum + stulist[i].eng;
mat_sum = mat_sum + stulist[i].mat;
}
printf(" >> 국어 평균 : %.2f\n", (float)kor_sum / size);
printf(" >> 영어 평균 : %.2f\n", (float)eng_sum / size);
printf(" >> 수학 평균 : %.2f\n", (float)mat_sum / size);
}
void fun_input_aver(struct student_t * stulist, int size)
{
int i;
for (i = 0; i < size; i++)
{
stulist[i].aver = stulist[i].total / 3.0f;
}
}
void fun_input_sum(struct student_t * stulist, int size)
{
int i;
for (i = 0; i < size; i++)
{
stulist[i].total = stulist[i].kor + stulist[i].eng + stulist[i].mat;
}
}
void fun_inputjumsu(struct student_t * stulist, int size)
{
//국어, 영어, 수학
int i;
for (i = 0; i < size; i++)
{
printf("[%d] 번째 학생 성적 입력(국어, 영어, 수학)\n", i + 1);
printf(" >> 입력 예) 홍길동 100 90 80 : ");
scanf("%s", stulist[i].name);
scanf("%d%d%d", &stulist[i].kor, &stulist[i].eng, &stulist[i].mat);
printf("\n");
}
}
void fun_printstudent(const struct student_t * stulist, int size)
{
int i;
printf("%10s%10s%10s%10s%10s%10s%10s\n",
"이름", "국어", "영어", "수학", "총점", "평균", "등급");
printf("======================================================================\n");
for (i = 0; i < size; i++)
{
printf("%10s%10d%10d%10d%10d%10.2f%10c\n",
stulist[i].name,
stulist[i].kor, stulist[i].eng, stulist[i].mat,
stulist[i].total, stulist[i].aver,
stulist[i].grad);
}
printf("======================================================================\n");
}
'01.Bit 단기 > C' 카테고리의 다른 글
32_난수 중복없이 출력 (0) | 2021.11.29 |
---|---|
31_파일IO바이너리모드 (0) | 2018.04.28 |
29_파일복사 (0) | 2018.04.28 |
28_파일IO문자전용 (0) | 2018.04.28 |
27_파일IO기본코드 (0) | 2018.04.28 |
댓글