Last active
August 29, 2015 14:22
-
-
Save nesffer/c7ea02c7790589f76acb to your computer and use it in GitHub Desktop.
Grades Management
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Nesffer 21580023 10 20 30 40 50 | |
Nesffer 21580023 60 70 80 90 100 | |
Nesffer 21580023 90 80 70 60 50 | |
Nesffer 21580023 40 30 20 10 20 | |
Nesffer 21580023 30 40 50 60 70 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define _CRT_SECURE_NO_WARNINGS | |
#include <stdio.h> | |
#define HUMAN 5 | |
// 구조체: 학생 | |
struct student { | |
char name[10]; // 이름 | |
char number[8]; // 학번 | |
int subjects[5]; // 과목 | |
int total; // 총점 | |
double average; // 평균 | |
char grade; // 등급 | |
int rank; // 석차 | |
}; | |
// 등급 반환 함수 | |
char Grade(char avg) { | |
char grade; | |
if (avg >= 90) | |
grade = 'A'; | |
else if (avg >= 80) | |
grade = 'B'; | |
else if (avg >= 70) | |
grade = 'C'; | |
else if (avg >= 60) | |
grade = 'D'; | |
else if (avg >= 50) | |
grade = 'E'; | |
else | |
grade = 'F'; | |
return grade; | |
} | |
int main() { | |
struct student s[HUMAN]; | |
int subject_total[HUMAN]; | |
double subject_average[HUMAN]; | |
double student_total = 0; | |
double student_average; | |
int i, j; | |
FILE * f; | |
// 파일 읽기/텍스트 열기 | |
f = fopen("grades.txt", "rt"); | |
if (f == NULL) { | |
puts("파일 열기 실패!"); | |
return -1; | |
} | |
// 파일 읽어 변수에 저장 | |
for (i = 0; i < HUMAN; i++) { | |
fscanf(f, "%s %s %d %d %d %d %d", s[i].number, s[i].name, &s[i].subjects[0], &s[i].subjects[1], &s[i].subjects[2], &s[i].subjects[3], &s[i].subjects[4]); | |
s[i].total = s[i].subjects[0] + s[i].subjects[1] + s[i].subjects[2] + s[i].subjects[3] + s[i].subjects[4]; | |
s[i].average = (double)s[i].total / HUMAN; | |
s[i].grade = Grade(s[i].average); | |
} | |
fclose(f); | |
// 1등으로 초기화 | |
for (i = 0; i < HUMAN; i++) | |
s[i].rank = 1; | |
// j 학생보다 i 학생의 평균이 작으면 석차++ | |
for (i = 0; i < HUMAN; i++) { | |
for (j = 0; j < HUMAN; j++) { | |
if (s[i].average < s[j].average) | |
s[i].rank++; | |
} | |
} | |
// 과목별 총합 | |
for (i = 0; i < HUMAN; i++) { | |
subject_total[i] = s[0].subjects[i] + s[1].subjects[i] + s[2].subjects[i] + s[3].subjects[i] + s[4].subjects[i]; | |
} | |
// 과목별 평균 | |
for (i = 0; i < HUMAN; i++) { | |
subject_average[i] = (double)subject_total[i] / HUMAN; | |
} | |
// 총 학생 총점 | |
for (i = 0; i < HUMAN; i++) { | |
student_total += s[i].average; | |
} | |
// 출력 | |
puts("+----------------------------------------------------------------------------------+"); | |
puts("| 이름 | 학번 | 국어 | 영어 | 수학 | 사회 | 과학 | 총점 | 평균 | 등급 | 석차 |"); | |
puts("+--------+----------+------+------+------+------+------+------+------+------+------+"); | |
for (i = 0; i < HUMAN; i++) { | |
printf("| %s | %s | %3d | %3d | %3d | %3d | %3d | %3d | %0.1lf | %c | %2d |\n", | |
s[i].number, s[i].name, s[i].subjects[0], s[i].subjects[1], s[i].subjects[2], s[i].subjects[3], s[i].subjects[4], s[i].total, s[i].average, s[i].grade, s[i].rank); | |
} | |
puts("+-------------------+------+------+------+------+------+------+------+------+------+"); | |
puts("| 평균 | 국어 | 영어 | 수학 | 사회 | 과학 | | 학생 | |"); | |
printf("| 점수 | %0.1lf | %0.1lf | %0.1lf | %0.1lf | %0.1lf | | %0.1lf | |\n", | |
subject_average[0], subject_average[1], subject_average[2], subject_average[3], subject_average[4], student_total / HUMAN); | |
puts("+----------------------------------------------------------------------------------+"); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment