문제입니다.
컴퓨터가 생각한 세 자리의 숫자를 맞추는 야구 게임을 작성하시오.
난수와 사용자가 입력한 숫자는 반드시 세 자리여야 하며 각 자리수는 서로 달라야 한다는 제약이 있다. 난수와 입력수의 대응되는 자리수가 정확하게 일치하면 스트라이크이며 대응되지 않더라도 일치하는 숫자가 있을 때는 볼이다.
예를 들어 123에 대해 135는 1스트라이크 1볼이며 345에 대해 354는 1스트라이크 2볼이다.
대응되는 세 자리가 모두 같은 3스트라이크가 되면 사용자가 난수를 맞춘 것으로 한다. 컴퓨터로 난수를 만들 때는 random 함수를 사용한다.
코드입니다..
#include <stdio.h>
#include <stdlib.h>
void main(){
int input, com;
int num1, num2, num3;
int com1, com2, com3;
com = rand()00;
com1 = com/100;
com2 = (com0)/10;
com3 = com;
while(1){
printf("3자리 숫자를 입력하세요 : ");
scanf("%d", &input);
int strike = 0, ball = 0;
if(input>=100 && input<=999){
num1 = input/100;
num2 = (input0)/10;
num3 = input;
if((num1==num2) || (num2==num3) || (num3==num1)){
printf("각 자리수가 다르게 입력하세요\n");
}
else{
if(num1==com1) strike++;
if(num2==com2) strike++;
if(num3==com3) strike++;
if(num1 == num2) ball++;
if(num2 == num3) ball++;
if(num3 == num1) ball++;
if(strike == 3){
printf("게임끝\n");
exit(0);
}
else{
printf("%d스트라이크 %d볼\n", strike, ball);
}
}
}
else{
printf("3자리수를 입력하세요\n");
}
}
}
문제점1. 볼이 카운팅안됨. 볼쪽 코드가 이상한데 어떻게 수정해야될까요?
문제점2. rand()값이 예를들어 2345041일경우 1000으로나눈 나머지값은 041이되서 100이하인 숫자가 되서 비교불가능.
문제점3. 어떻게 이 코드를 더 효율적으로 짜나요?
댓글 0