목차
■ 이해점검 풀이
■ 프로그램 문제 풀이
■ 프로그램 문제 풀이
본문내용
k=0; k<=6; k++) {
for (m=0; m
printf( "%7s\t%s\t\t",
sfce[gbr[j+m].cd[k].fce], ssut[gbr[j+m].cd[k].sut] );
}
printf("\n");
}
printf("\n");
}
printf("\n");
}
int checkrank(card *x)
{
//card *y = x;
card *y;
int i, cntfce[13] = {0}, cntsut[4] = {0};
int cntpair = 0, cnttriple = 0;
int rk = 0;
//카드를 정렬
srt(x);
y = x;
//7장의 카드에서 같은 번호와 같은 무늬의 수를 각각 알아본다
for(i=0; i<=6; i++)
{
cntfce[(y+i)>fce]++;
cntsut[(y+i)>sut]++;
}
/* 카드를 순서로 각각의 갯수를 출력
for(i=0; i<13; i++)
printf("%s[%d], ", sfce[i], cntfce[i]);
printf("\n");
for(i=0; i<4; i++)
printf("%s[%d], ", ssut[i], cntsut[i]);
printf("\n");
*/
//같은 번호의 수를 조사하여 족보를 정한다.
for(i=0; i<=12; i++)
{
switch (cntfce[i]) {
case 2:
cntpair++;
break;
case 3:
cnttriple++;
break;
case 4:
rk = Fourcard;
break;
}
}
if (cntpair >= 1) {
if (rk < Onepair) rk = Onepair;
if (cntpair >= 2) {
if (rk < Twopair) rk = Twopair;
if (cnttriple >= 1)
if (rk < Fullhouse) rk = Fullhouse;
}
}
if (cnttriple >= 1) {
if (rk < Triple) rk = Triple;
}
y = x;
if ( isstraight(y) ) {
if (rk < Straight) rk = Straight;
}
//플러쉬 검사
for(i=0; i<=3; i++)
{
if (cntsut[i] >= 5) {
//printf("\n\tFlush\n\n");
if (rk == Straight)
rk = Straightflush;
else if (rk < Flush)
rk = Flush;
}
}
return rk;
}
int isstraight(card *x) //스트레이트 검사
{
card *y = x;
int i, j, same;
card *start;
for(i=0; i<=2; i++)
{
start = y + i;
j = 0;
same = 0;
while ( ( ((start+j)>fce) + 1 ) == ((start+(j+1))>fce) )
{
if (++same == 4) break;
j++;
}
if(same >= 4)
{
return 1;
//break;
}
}
return 0;
}
////
void sfl(card *dck)
{
int i,j;
card temp;
srand(time(NULL));
for (i=0;i<=51;i++){
j = rand() % 52;
temp = dck[i];
dck[i] = dck[j];
dck[j] = temp;
}
}
void srt(card *x)
{
card *y = x;
int i,j;
for(i=0; i<=5; i++)
for(j=i+1; j<=6; j++)
if ( (y+i)>fce > (y+j)>fce )
swap(y+i, y+j);
}
void swap(card *x,card *y)
{
card z;
z=*x; *x=*y; *y=z;
}
void fdk(card *dck)
{
int i;
for(i=0; i<51; i++)
{
dck[i].fce = i%13;
dck[i].sut = i/13;
}
}
/* file : card.h */
#include
#include
#define NUMOFGAMER 5
enum enumsuit {Dia,Clb,Hrt,Spd};
enum enumface {Deuce,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Jack,Queen,King,Ace};
enum rank {None,Onepair,Twopair,Triple,Straight,Flush,Fullhouse,Fourcard,Straightflush,RoyalSF};
typedef enum enumsuit est;
typedef enum enumface efc;
typedef enum rank rank;
struct card {
est sut;
efc fce;
};
typedef struct card card;
char *ssut[] = {"Diamond", "Club", "Heart", "Spade"};
char *sfce[] = {"(2)","(3)","(4)","(5)","(6)",
"(7)","(8)","(9)","(10)","Jack","Queen","King","Ace"};
char *srank[] = {"None", "One pair", "Two pair", "Triple", "Straight", "Flush",
"Full house", "Four card", "Straight flush", "Royal straight flush"};
struct gambler {
card cd[7];
rank rk;
};
typedef struct gambler gambler;
void fdk(card *);
void sfl(card *);
void del(card *, gambler *gamer);
void printcard(gambler *);
void printrank(gambler *gamer); //순위를 출력하고 승자를 출력
void srt(card *);
void swap(card *,card *);
int checkrank(card *x);
int isstraight(card *x); //스트레이트 검사
for (m=0; m
sfce[gbr[j+m].cd[k].fce], ssut[gbr[j+m].cd[k].sut] );
}
printf("\n");
}
printf("\n");
}
printf("\n");
}
int checkrank(card *x)
{
//card *y = x;
card *y;
int i, cntfce[13] = {0}, cntsut[4] = {0};
int cntpair = 0, cnttriple = 0;
int rk = 0;
//카드를 정렬
srt(x);
y = x;
//7장의 카드에서 같은 번호와 같은 무늬의 수를 각각 알아본다
for(i=0; i<=6; i++)
{
cntfce[(y+i)>fce]++;
cntsut[(y+i)>sut]++;
}
/* 카드를 순서로 각각의 갯수를 출력
for(i=0; i<13; i++)
printf("%s[%d], ", sfce[i], cntfce[i]);
printf("\n");
for(i=0; i<4; i++)
printf("%s[%d], ", ssut[i], cntsut[i]);
printf("\n");
*/
//같은 번호의 수를 조사하여 족보를 정한다.
for(i=0; i<=12; i++)
{
switch (cntfce[i]) {
case 2:
cntpair++;
break;
case 3:
cnttriple++;
break;
case 4:
rk = Fourcard;
break;
}
}
if (cntpair >= 1) {
if (rk < Onepair) rk = Onepair;
if (cntpair >= 2) {
if (rk < Twopair) rk = Twopair;
if (cnttriple >= 1)
if (rk < Fullhouse) rk = Fullhouse;
}
}
if (cnttriple >= 1) {
if (rk < Triple) rk = Triple;
}
y = x;
if ( isstraight(y) ) {
if (rk < Straight) rk = Straight;
}
//플러쉬 검사
for(i=0; i<=3; i++)
{
if (cntsut[i] >= 5) {
//printf("\n\tFlush\n\n");
if (rk == Straight)
rk = Straightflush;
else if (rk < Flush)
rk = Flush;
}
}
return rk;
}
int isstraight(card *x) //스트레이트 검사
{
card *y = x;
int i, j, same;
card *start;
for(i=0; i<=2; i++)
{
start = y + i;
j = 0;
same = 0;
while ( ( ((start+j)>fce) + 1 ) == ((start+(j+1))>fce) )
{
if (++same == 4) break;
j++;
}
if(same >= 4)
{
return 1;
//break;
}
}
return 0;
}
////
void sfl(card *dck)
{
int i,j;
card temp;
srand(time(NULL));
for (i=0;i<=51;i++){
j = rand() % 52;
temp = dck[i];
dck[i] = dck[j];
dck[j] = temp;
}
}
void srt(card *x)
{
card *y = x;
int i,j;
for(i=0; i<=5; i++)
for(j=i+1; j<=6; j++)
if ( (y+i)>fce > (y+j)>fce )
swap(y+i, y+j);
}
void swap(card *x,card *y)
{
card z;
z=*x; *x=*y; *y=z;
}
void fdk(card *dck)
{
int i;
for(i=0; i<51; i++)
{
dck[i].fce = i%13;
dck[i].sut = i/13;
}
}
/* file : card.h */
#include
#include
#define NUMOFGAMER 5
enum enumsuit {Dia,Clb,Hrt,Spd};
enum enumface {Deuce,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Jack,Queen,King,Ace};
enum rank {None,Onepair,Twopair,Triple,Straight,Flush,Fullhouse,Fourcard,Straightflush,RoyalSF};
typedef enum enumsuit est;
typedef enum enumface efc;
typedef enum rank rank;
struct card {
est sut;
efc fce;
};
typedef struct card card;
char *ssut[] = {"Diamond", "Club", "Heart", "Spade"};
char *sfce[] = {"(2)","(3)","(4)","(5)","(6)",
"(7)","(8)","(9)","(10)","Jack","Queen","King","Ace"};
char *srank[] = {"None", "One pair", "Two pair", "Triple", "Straight", "Flush",
"Full house", "Four card", "Straight flush", "Royal straight flush"};
struct gambler {
card cd[7];
rank rk;
};
typedef struct gambler gambler;
void fdk(card *);
void sfl(card *);
void del(card *, gambler *gamer);
void printcard(gambler *);
void printrank(gambler *gamer); //순위를 출력하고 승자를 출력
void srt(card *);
void swap(card *,card *);
int checkrank(card *x);
int isstraight(card *x); //스트레이트 검사
키워드
추천자료
C로 배우는 프로그래밍 기초 11장 이해점검 풀이
C로 배우는 프로그래밍 기초(3장,4장,5장,6장,7장,8장,9장)이해점검 풀이~
[C 프로그래밍] C로 배우는 프로그래밍 기초 6장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 7장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 1장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 11장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 12장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 13장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 18장 이해점검 및 프로그램문제 풀이
소개글