게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 질문드립니다 포커게임이에요
게시물ID : computer_130235짧은주소 복사하기
작성자 : 아라니나
추천 : 0
조회수 : 3112회
댓글수 : 3개
등록시간 : 2013/11/25 15:50:00
#include <stdio.h>

typedef struct card 
{
int kind;
int num;
} card;

void pair(card* you);
void triple(card* you);
//void fullhouse(card* you);

int main() 
{
int i=0;
card you[5] = {0};

printf("카드의 종류 와 번호를 입력 하시오\n");
printf(" 1. ♠\t 2. ◆\t 3. ♥\t 4. ♣\t \n\n");

for(i=0; i<5; i++)
{
scanf("%d %d",&you[i].kind,&you[i].num);
}
for(i=0; i<5; i++)
{
printf("카드 종류는 %d 이고 번호는 %d 이다 \n",you[i].kind,you[i].num);

}
pair(you);
triple(you);
//fullhouse(you);
return 0;
}

void pair(card* you) 
{
printf("페어 함수 들어옴\n\n");
int i,j=0;
int count=0;

for(i=0; i<5; i++)
{
j=i+1;
for(;j<5; j++)
{
if(you[i].num == you[j].num)
{
count++;
}
}
}

//printf("%d\n\n", count);

if(count==1)
printf("원페어 입니다.\n\n");
else if(count==2)
printf("투페어 입니다.\n\n");

}


void triple(card* you) 
{
printf("트리플 함수 들어옴\n\n");
int i,j=0,k=0;
int count=0;

for(i=0; i<5; i++)
{
j=i+1;
for(;j<5; j++)
{
if(you[i].num == you[j].num)
{
for(; k<5; k++)
{
k=j+1;
if(you[i].num == you[k].num) 
count++;
break;
}
if(count==1)
break;
}
if(count==1)
break;
}
}
if(count==1)
printf("트리플 입니다.\n\n");
}

이러한 코드 입니다.

실행시키고 

입력을 
제목 없음.png

이오ㅏ같이 하면 트리플이 나와야 되는데 나오지가 않습니다.

트리플 같은경우는 삼중 포문을 써서 

i  j  k
0 1 2
     3
     4
  2 3
     4
  3 4
1 2 3
     4
  3  4
2 3 4

이렇게 모든 경우의 수를 다 검사하도록 하였고 그 중간에 만약 트리플이 되는 경우가 있으면 break 문을 이용하여 다 빠져나오도록 하였습니다

어느부분때문에 트리플 함수는 제대로 작동하지 않는것일까요 ?
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호