머가 틀린지좀 알려주세요..c인공지능숫자야구코드
달콤이
인공지능 야구 게임 코드에러수정질문 내용 :
미완성인데 컴퓨터가 사람이 낸문제 맞추는 부분에서 에러가 있습니다..좀 고쳐주세욥 ㅠㅠ#includestdio.h
#includestdlib.h
#includetime.hvoid landom(int landom_num[]);
void compare(int user_num[],int landom_num[],int*p_strike,int*p_ball);
int findstrike(int *foranswer, int *answer)
{
int s = 0;
for(int i=0; i3; i++)
{
if(answer[i] == foranswer[i])
s++;
}
return s;
}int findball(int *foranswer, int *answer)
{
int b = 0;
for(int i=0; i3; i++)
{
for(int j=0; j3; j++)
{
if((i != j) && (answer[i] == foranswer[j]))
b++;
}
}return b;
}
void findforanswer(int (* table)[4], int &choice, int *foranswer)
{
foranswer[0] = table[choice][0];
foranswer[1] = table[choice][1];
foranswer[2] = table[choice][2];
}void first(int (*table)[4], int &total)
{int num = 9; //1~9 까지 (0~9까지로 바꾸려면, +1 을 제거하고 9까지)
for(int i=0; inum; i++)
{
for(int j=0; jnum; j++)
{
for(int k=0; knum; k++)
{
if(i!=j && i!=k && j!=k)
{
table[total][0] = i+1;
table[total][1] = j+1;
table[total][2] = k+1;
if(i==j || i==k || j==k)
{
table[total][3] = -1;
}else
{
table[total][3] = 1;
}total++;
}
}
}
}
}void after(int (* table)[4], int *foranswer, int &com_strike, int &com_ball, int total)
{
if((com_strike == 0) && (com_ball == 0)) //아웃처리
{
//foranswer 의 값을 table 에서 찾아 -1 처리
for(int i=0; itotal; i++)
{
if( table[i][0] == foranswer[0] || table[i][0] == foranswer[1] || table[i][0] == foranswer[2] || table[i][1] == foranswer[0] || table[i][1] == foranswer[1] || table[i][1] == foranswer[2] || table[i][2] == foranswer[0] || table[i][2] == foranswer[1] || table[i][2] == foranswer[2])
{
table[i][3] = -1;
}
}
}//같은 strike & ball 값을 가지는 table 값을 찾아서 판단값을 -1 로 결정for(int i=0; itotal ; i++)
{
int s=0, b=0;
s=findstrike(foranswer, table[i]);
b=findball(foranswer, table[i]);
if((s!=com_strike) || (b!=com_ball))
{
table[i][3] = -1;
}
}
}void remove(int (* table)[4], int &total)
{
for(int z=0; ztotal; z++)
for(int i=0; itotal; i++)
{
for(int j=0; jtotal; j++)
{
if(table[j][3] == -1)
{
table[j][0] = table[total-1][0];
table[j][1] = table[total-1][1];
table[j][2] = table[total-1][2];
table[j][3] = table[total-1][3];
table[total-1][3] = -1;
total--;
}
}
}}int main(void) {int landom_num[3],user_num[3];
int strike,ball;
int table[720][4]; //720 = 0~9 :: 504 = 1~9
int total = 0;
int choice = 0;
int answer[3];
int foranswer[3];
int com_strike = 0,com_ball = 0;
int re = 1;
int num = 0;
srand((int)time(null));landom(landom_num);//랜덤숫자 발생
printf( 안녕세요 숫자야구에 오신걸 환영합니다.\n\n\n);printf(컴퓨터가 풀어야할 정답을 입력해 주세요 \n(숫자 3개 빈칸으로 띄어쓰기 (1~9 사이숫자)) : );
scanf(%d %d %d, &answer[0], &answer[1], &answer[2]);while(1){
first(table, total);
num++;
choice=rand()%total;
findforanswer(table, choice, foranswer);
printf(================================================\n[%d] 컴퓨터의 선택 : %d %d %d \n, num, foranswer[0], foranswer[1], foranswer[2]);
com_strike = findstrike(foranswer, answer);
com_ball = findball(foranswer, answer);
printf( ------%d strike, %d ball %d ball-----\n, com_strike, com_ball);
after(table, foranswer,com_strike,com_ball, total);
remove(table, total);
if(total == 0)
{
printf(\n\n================================================\n입력된 값이 정확한지 확인해 주십시오\n================================================\n);
break;
}
printf((user) 3개 숫자 입력:);
scanf(%d %d %d,&user_num[0],&user_num[1],&user_num[2]);while(!(user_num[0]!=user_num[1]&&user_num[0]!=user_num[2]&&user_num[1]!=user_num[2])){ //중복숫자 금지용
{
printf(숫자가 중복되었습니다. 중복되지않는 숫자3개를 입력해주세요:);
scanf(%d %d %d,&user_num[0],&user_num[1],&user_num[2]);
}
}
compare(user_num,landom_num,&strike,&ball);printf(%d스트라이크 %d볼\n\n,strike,ball);
if(com_strike == 3){
printf(컴퓨터는 %d번만에 성공하였습니다.\n, num);
printf(%d,total);}}
return 0;
}
void landom(int landom_num[]){
int i;
srand((int)time(null));
for(i=0;i3;i++)
landom_num[i]=rand()%9+1;
while(landom_num[0]==landom_num[1]||landom_num[0]==landom_num[2]||landom_num[1]==landom_num[2]){ //중복 될경우 재생성 되게 했습니다.
landom_num[0]=rand()%9+1;
landom_num[1]=rand()%9+1;
landom_num[2]=rand()%9+1;
}
}
void compare(int user_num[],int landom_num[],int *p_strike,int *p_ball){
int i,j;
(*p_ball)=0;
(*p_strike)=0;for(i=0;i3;i++)
{
for(j=0;j3;j++)
{
if (user_num[i]==landom_num[j]){
if(i==j){
(*p_strike)++;
(*p_ball)--; }
(*p_ball)++;
}
}
}
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2695626 | 피보나치수열 과제 때문에 질문 드립니다. (6) | 옆집언니 | 2025-05-22 |
2695595 | 포인트공부중입니다 int형에서 4=1 인가요? (3) | 족장 | 2025-05-22 |
2695567 | 드라이브 고유번호를 가져오는 함수 (2) | 초코맛사탕 | 2025-05-21 |
2695533 | 음수의 산술변환! 질문이요 ㅠㅠ... (4) | 꽃여름 | 2025-05-21 |
2695506 | 구조체 배열 이용 도서목록 출력 프로그램 (1) | 가을귀 | 2025-05-21 |
2695450 | c언어 함수 질문이요.... | 이슬비 | 2025-05-20 |
2695403 | VirtualAlloc함수 및 메모리 질문 | 크리에이터 | 2025-05-20 |
2695355 | c언어 for함수 | 미쿡 | 2025-05-19 |
2695327 | 안녕하세요 제가 이번에 좀 큰 프로그램을.. | 악당 | 2025-05-19 |
2695295 | mutex동기화의 thread기반 채팅 서버소스 질문입니다 | 그루터기 | 2025-05-19 |
2695270 | 질문이요..swap 관한겁니다..ㅠㅠ (3) | 콩알녀 | 2025-05-19 |
2695244 | 노땅초보궁금한게 하나 있는데요..반복문(while문)초보자질문 (6) | 큰꽃늘 | 2025-05-18 |
2695166 | do while 문 어떤것이잘못된건지 모르겠어요 (2) | 아이폰 | 2025-05-18 |
2695122 | 구조체에 대해 물어보고 싶은게 있습니다 ^^^.. (7) | 수련 | 2025-05-17 |
2695091 | txt 파일 입출력 후 2차 배열에 저장하기입니다. (3) | 헛장사 | 2025-05-17 |
2695063 | 수도요금 프로그램좀 짜주세요. | 시내 | 2025-05-17 |
2695033 | 답변좀요ㅠㅠ (1) | 비사벌 | 2025-05-16 |
2695010 | C++의 STL은 왜 굳이 템플릿화 시켜서 라이브러리를 만드나요? (초보수준의 질문..) (2) | 엘보어 | 2025-05-16 |
2694958 | 로직이 변한다는 것에 대해서 궁금합니다. | 튼동 | 2025-05-16 |
2694929 | 열혈강의 25-2 두번째 문제 질문 | 지우개 | 2025-05-15 |