본문 바로가기
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;
}

반응형

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