B
BadMinus
Я только начинаю программить и вот у мен задача.
1. Я написал код чтобы тасовало колоду и раздавало первые 5 карт. После этого пишется какая комбинация. Хотел спросить как можно лучше и грамотней это написать?
Вот мой пример.
2. Следующая задача у меня состоит в том чтобы написать: Программа сдает компу и человеку по 5 карт и комп проверят какие у него карты и исходя из этого берет 1,2,3 карты вместо плохих.
Как это лучше написать каков алгоритм? Я не смог ничего не придумать лучше чем каждой комбинации давать кол-во очков. И если есть возможность более лучшей комбинации идет замена карт. Но всё равно для меня что то сложно.
Большое спасибо за ответы. Буду рад любой помощи.
ЗЫ И привет h34r:
1. Я написал код чтобы тасовало колоду и раздавало первые 5 карт. После этого пишется какая комбинация. Хотел спросить как можно лучше и грамотней это написать?
Вот мой пример.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shuffle(int [][13]);
void deal(const int [][13], const char *[],
const char *[]);
void results(const int [][13], const char *[],
const char *[], int [13]);
int main ()
{
char *suit [4] = {"Hearts", "Diamonds",
"Clubs","Spades"};
char *face [13] = {"Ace","Deuce","Three","Four","Five",
"Six","Seven","Eight",
"Nine","Ten","Jack",
"Queen","King"};
int deck[4][13] = {0};
int res[18] = {0};
srand(time(NULL));
shuffle(deck);
deal(deck,face,suit);
results(deck,face,suit,res);
return 0;
}
void shuffle(int wDeck[][13])
{
int card, row, column;
for (card = 1; card <= 52; card++){
row = rand() % 4;
column = rand() % 13;
while (wDeck[row][column] != 0) {
row = rand() % 4;
column = rand() % 13;
}
wDeck[row][column] = card;
}
}
void deal(const int wDeck[][13], const char *wFace[],
const char *wSuit[])
{
int card, row, column;
for (card = 1; card <= 5; card++)
for (row = 0;row <= 3; row++)
for (column = 0; column <=12;column++)
if (wDeck[row][column] == card)
printf("%5s of %-8s\n",
wFace[column],wSuit[row],
card % 2 == 0 ? '\n' : '\t');
}
void results(const int wDeck[][13], const char *wFace[],
const char *wSuit[],int wRes[13])
{
int card, row, column,count;
count = 0;
for (card = 1; card <= 5; card++)
for (row = 0;row <= 3; row++)
for (column = 0; column <=12;column++)
if (wDeck[row][column] == card){
if (wFace[column] == "Ace")
wRes[1] += 1;
if (wFace[column] == "Deuce")
wRes[2] += 1;
if (wFace[column] == "Three")
wRes[3] += 1;
if (wFace[column] == "Four")
wRes[4] += 1;
if (wFace[column] == "Five")
wRes[5] += 1;
if (wFace[column] == "Six")
wRes[6] += 1;
if (wFace[column] == "Seven")
wRes[7] += 1;
if (wFace[column] == "Eight")
wRes[8] += 1;
if (wFace[column] == "Nine")
wRes[9] += 1;
if (wFace[column] == "Ten")
wRes[10] += 1;
if (wFace[column] == "Jack")
wRes[11] += 1;
if (wFace[column] == "Queen")
wRes[12] += 1;
if (wFace[column] == "King")
wRes[13] += 1;
if (wSuit[row] == "Hearts")
wRes[14] += 1;
if (wSuit[row] == "Diamonds")
wRes[15] += 1;
if (wSuit[row] == "Clubs")
wRes[16] += 1;
if (wSuit[row] == "Spades")
wRes[17] += 1;
}
for (column = 14; column <=17;column++)
if (wRes[column] == 5)
printf("\nYou have a flash!");
for (column = 1; column <=13;column++){
if (wRes[column] == 1)
if (wRes[column + 1] == 1)
if (wRes[column + 2] == 1)
if (wRes[column + 3] == 1)
if (wRes[column + 4] == 1)
printf("\nYou have a street!"); }
printf("%d", wRes[1]);
printf("%d", wRes[2]);
printf("%d", wRes[3]);
printf("%d", wRes[4]);
printf("%d", wRes[5]);
printf("%d", wRes[6]);
printf("%d", wRes[7]);
printf("%d", wRes[8]);
printf("%d", wRes[9]);
printf("%d", wRes[10]);
printf("%d", wRes[11]);
printf("%d", wRes[12]);
printf("%d", wRes[13]);
for (column = 1; column <=13;column++)
if (wRes[column] == 5)
printf("\nYou have a care!");
for (column = 1; column <=13;column++)
if (wRes[column] == 3)
printf("\nYou have a three cards!");
for (column = 1; column <=13;column++)
if (wRes[column] == 2)
++count;
for (column = 1; column <=13;column++)
if (wRes[column] == 2){
printf("\nYou have a %d pair!", count);
break;
}
}
2. Следующая задача у меня состоит в том чтобы написать: Программа сдает компу и человеку по 5 карт и комп проверят какие у него карты и исходя из этого берет 1,2,3 карты вместо плохих.
Как это лучше написать каков алгоритм? Я не смог ничего не придумать лучше чем каждой комбинации давать кол-во очков. И если есть возможность более лучшей комбинации идет замена карт. Но всё равно для меня что то сложно.
Большое спасибо за ответы. Буду рад любой помощи.
ЗЫ И привет h34r: