//본격 학점 계산 프로그램
#include <stdio.h>
#include <stdlib.h>
float hak(char d[]) // 학점문자열을 점수로 치환하기 위한 함수 hak()
{
float a;
switch (*d)
{
case 'a+':
a = 4.5;
break;
case 'a':
a = 4;
break;
case 'b+':
a = 3.5;
break;
case 'b':
a = 3;
break;
case 'c+':
a = 2.5;
break;
case 'c':
a = 2;
break;
case 'd+':
a = 1.5;
break;
case 'd':
a = 1;
break;
case 'f':
a = 0;
break;
default:
printf("잘못 입력하셨습니다.\n");
break;
}
return a; // 학점 점수 반환
}
main(void)
{
int c, b, i, x=0, f[10]; // c는 과목수
char h[10], d[2]; // h는 과목이름 d는 학점문자열(a+, a, b+ ...)
float g[10], z[10], y=0; //
printf("학점을 계산해주는 프로그램입니다.\n모든 과목 수를 입력하세요.");
scanf("%d", &c);
for(i=0; i<c; i++)
{
printf("학점을 입력하시오.(과목이름 점수[소문자+] 학점):");
scanf("%s %s %d", h, d, &b);
g[0+i] = hak(d);
f[0+i] = b;
}
for(i=0; i<c; i++)
{
x = x + f[0+i]; // 학점 총 합 x
z[0+i] = g[0+i] * f[0+i];
}
for(i=0; i<c; i++)
{
y = y + z[0+i]; // 점수 총 합 y
}
printf("총학점은 %d, 총점수는 %f이므로 \n", x, y);
printf("당신의 총 학점평균(총점수/총학점)은 %f\n", y/x);
}
역시 많이 부족한 나의 스킬을 보여주는 듯 중첩for문도아닌 그냥 for문만 3번을 활용했다.
매크로를 사용해 볼까 했지만 배열값을 매크로로 전달하는데는 문제가 있어서 포기했다.
소스를 알아보기가 힘들다. 다음부터는 좀 길더라도 단어로 써서 가독성을 높이도록 해야겠다.
자바를 이용 깔끔한 프로그램을 만들고 싶었지만, 역시 내공이 부족했다.
그리고 왠지 윈도우 프로그래밍은 꺼려지는이유가 뭘까.
부디 계산해본 학점이 좌절을 낳지 않기를 빈다. T^T