1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include<stdio.h> 
#include<stdlib.h>
#include<time.h> 
int main()
{
    int A[3];//쉬움난이도
    int B[4];
    int C[4];//중간난이도
    int D[5];
    int E[5];//어려움난이도
    int F[6];
    int i=1;
    int j,k;
    int difficult; // 난이도 설정
    int strike;
    int ball;
 
    int a; // 정답확인용
 
    while(1)    //처음시작파트
    {
 
    printf("난이도(숫자 0,1,2,3을 입력하세요)\n0번 - 설명\n1번 - 쉬움(3자리)\n2번 - 중간(4자리)\n3번 - 어려움(5자리)\n난이도를 고르세요 - ");
    scanf("%d"&difficult);
 
    if (difficult == 0// 설명문
    {
        printf("\n\n\n숫자야구 게임 설명\n");
        printf("랜덤한 숫자를 맞추는 게임입니다.\n");
        printf("자릿 수는 쉬움 3자리, 보통 4자리, 어려움 5자리가 있습니다.\n");
        printf("각 숫자는 띄워쓰기로 구분합니다.\n");
        printf("ex) 123( x ), 1 2 3( o )\n\n");
    }
 
    if (difficult == 1)  // 1을 입력했을때
    {
        do {
            srand(time(NULL));
            A[0= rand() % 10;
            A[1= rand() % 10;
            A[2= rand() % 10;
            if (A[0!= 0)
            if (A[1!= 0)
            if (A[2!= 0)
                if (A[0!= A[1])
                if (A[0!= A[2])
                    if ((A[1!= A[2]))
                    {
                        printf("\n\n\n(3자리 쉬움)난이도로 Start Game\n\n\n");
                        break;
                    }
        } while (1); //서로다른 숫자를 뽑기위해 계속 실행하기위해 do while 무한반복문을 하였다.
 
 
        do {
            printf("3개의 숫자 선택 :");
            scanf("%d %d %d"&B[0], &B[1], &B[2]);
 
            if ((A[0== B[0]) && (A[1== B[1]) && (A[2== B[2]))   // 정답조건
            {
                printf("game over \n");
                break;
            }
 
            else if ((B[0== B[1]) && (B[0== B[2]) &&         // 중복된 숫자입력방지
                    (B[1== B[2]))
            {
                printf("중복된 숫자입력은 안 됌\n");
            }
 
            else if ((B[0> 10|| (B[1> 10|| (B[2> 10)) // 10 이상의 숫자 입력되면 리턴
            {
                printf("각 자리는 10미만의 수만 입력 가능\n");
            }
 
            /*
            else if ((B[4] != 0))                                // 자릿수 초과해서 입력시 에러
            {
                printf("\n\n자릿 수 초과\n\n");
            }
 
            */
            else                                                //그렇지 않으면 반복문 실행
            {
                strike = 0;
                ball = 0;                        // 반복시 스트라이크 볼 숫자 초기화
 
                for (j = 0; j < 3; j++)            //정답 배열 비교
                {
                    for (k = 0; k < 3; k++)        //플레이어 입력값 비교
                    {
                        if (A[j] == B[k])        // 처음에는 변수를 배열로 하지 않았는데 a,b,c,d,e,f 로 하면 조건이 너무 길어져서 일단 임의의 숫자랑 사용자가 선택한 숫자가 같은 조건을 만들었다.
                        {
                            if (j == k)            //배열과 숫자 동시 만족시 스트라이크
                                strike++;
                            else                //숫자만 만족시 볼
                                ball++;
                        }
                    }
                }
 
                printf("%d번쨰 도전결과 : %d strike, %d ball !!\n\n", i, strike, ball);
                }
            i++;
        }while (1);
    }            
    i++;
    } while (1);
        
        return 0;
 
    }
cs





난이도 조절하는 부분있는데 한곳만 해결하면 다른곳도 다 해결될거같아서 앞부분만 잘랐어요.

제가 질문드리려는건 중간에 주석처리 된

else if ((B[4] != 0))        // 자릿수 초과해서 입력시 에러

{
printf("\n\n자릿 수 초과\n\n");
}
이 파트입니다.

숫자야구 쉬움단계를 세자리를 맞추는 걸로 했습니다
int A[3] 는 랜덤숫자를 받아오는 배열
int B[4] 는 사용자 입력값을 받아오는 배열이구요.

B[4]를 해준 이유는 만약 1 2 3 이런숫자가 아닌 1 2 3 4 이런식으로 세자리를 넘는 배열이 입력되면
B[4]를 확인해서 예외처리를 하려고 했기 때문입니다.

하지만 B[4]!=0을 하면 정상적인 입력값도 모두 예외처리가 되어버리고
B[3]!=0을하면 예외처리 되어야 할 값이 입력됩니다.

어떻게하면 될까요?? 
포인터 안배우고 배열로만 짜려는데 가능한가여?