C언어 - (Report) 070426 / 난수응용 야구게임
Posted 2007/04/26 21:56, Filed under: 프로그래밍/C, C++#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define SIZE 3 //배열 크기
void numCheck(int *number, int *in);
void numRandom();
int in[SIZE]; //입력받을 값 전역변수로 선언
int number[SIZE]; //난수받을 값 전역변수로 선언
int strike; //스트라이크 갯수 저장할 카운트 전역변수로 선언
int ball; //볼 갯수 저장할 카운트 전역변수로 선언
void main()
{
int i;
numRandom(); //numRandom 호출
printf("숫자 야구 게임! 3자리 숫자를 맞춰보세요.(0~9)\n");
printf("ex) 1 2 3\n");
while(1)
{
if (strike == 3) //정답이면 출력
{
printf("-----------\n");
printf("All Strike!\n");
printf("-----------\n");
for (i=0; i<SIZE; i++)
{
printf("%d ",number[i]);
}
printf("\n-----------\n");
break;
}else{ //숫자 입력받는 부분
scanf("%d %d %d",&in[0],&in[1],&in[2]);
numCheck(number,in);
printf(" : %d Strike, %d Ball 입니다.\n",strike,ball);
}
}
}
//중복되지 않는 난수 발생시켜서 저장하는 함수
void numRandom()
{
int i,j,random;
srand((unsigned) time(NULL));
for (i=0; i<SIZE; )
{
random = rand()%10;
//난수를 발생시켜 random변수에 저장
for (j=0; j<i; j++)
{
if (number[j] == random) break;
//number배열 첫번째부터 받은 난수와 비교해서 같으면 빠져나오기
}
if (i==j) //i와 j가 같으면
{
number[i++] = random;
//number배열에 난수값 저장하고 i를 증가
}
}
}
//입력받은 숫자와 난수의 일치여부 체크하는 함수
void numCheck(int *number, int *in)
{
int i,j;
strike=0; // trike 0으로 초기화
ball=0; //ball 0으로 초기화
for (i=0; i<SIZE; i++)
{
for (j=0; j<SIZE; j++)
{
if (number[i] == in[j] && i==j)
//숫자와 자릿수가 일치하면 strike 값 증가
{
strike++;
}else if (number[i] == in[j] && i!=j )
//숫자가 일치하고 자릿수가 틀리면 ball 값 증가
{
ball++;
}
}
}
}
Response :
0 Trackback
,
0 Comment
Trackback URL : http://mysilpir.net/trackback/193
baseball.cpp


