본문 바로가기
IT창고/C

볼링점수 계산 프로그램...

by 창구창고 2007. 1. 22.

📑 목차

    반응형

    #include<stdio.h>

    int a[22];

    #define ERROR printf("Bad shot %d in frame %d.n",a[j],i+1); return;
    #define CHECK1 if (a[j] < 0 || a[j] > 10)      
    #define CHECK2 if (a[j] < 0 || a[j] > 10-a[j-1])
    #define OUTPUT1 if (a[j]) printf("%d",a[j]); else printf("-");
    #define OUTPUT2 if (a[j] == 10-a[j-1]) { printf("/"); t += a[j+1]; } else OUTPUT1

    void score_data()
    {
            int tx[10] = {0};
            int i,j,t;
            printf("  1   2   3   4   5   6   7   8   9   10n");
            printf("+---+---+---+---+---+---+---+---+---+---+n");
                   
            for (i=0, j=0, t=0; i<10; ++i, ++j){
                    printf("|");
                    CHECK1;
                    if (a[j] == 10) { // strike
                            tx[i] = t += 10 + a[j+1] + a[j+2];
                            if (i == 9) {
                                    printf("X");
                                    ++j; CHECK1;
                                    if (a[j] == 10) {
                                            printf("X");
                                            ++j; CHECK1;
                                            if (a[j] == 10) printf("X");
                                            else OUTPUT1;
                                    }
                                    else {
                                            OUTPUT1;
                                            ++j; CHECK2; OUTPUT2;
                                    }
                    }
                    else {
                            printf("X");
                    }
        }
                    else {
                            OUTPUT1;
                            if (i != 9 || a[j] + a[j+1] < 10) printf(" ");
                            ++j; CHECK2; OUTPUT2;
                            tx[i] = t += a[j-1] + a[j];
                    }
            }
            printf("|n+---+---+---+---+---+---+---+---+---+---+n");
            for (i=0; i<10; ++i) {
                    printf("%4d", tx[i]);
            }
             printf("n");
    }


    int main(void)
    {
            int i = 0, j=1;

            while (i < 22){
                    for(j=1; j<=2; j++){
                            printf("Enter the frame %d score : ",j);
                            scanf("%d",&a[i++]);
                    }
            }
            score_data();
            return 0;
    }

    반응형

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."