수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

머가 틀린지좀 알려주세요..c인공지능숫자야구코드

달콤이

2023.04.01

인공지능 야구 게임 코드에러수정질문 내용 :

미완성인데 컴퓨터가 사람이 낸문제 맞추는 부분에서 에러가 있습니다..좀 고쳐주세욥 ㅠㅠ#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)++;
}
}
}
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
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
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com