在c中从数组中删除一张卡

时间:2014-04-04 00:21:32

标签: c

所以我做了一个程序,它将每张牌从一副牌分配到一个阵列中。我被要求制作一个shuffle函数,displayCard函数,以及一个dealCard函数。我真正感到困惑的是dealCard函数。我没有从甲板上处理/取出卡片而不再将其放入deck[]的概念。

2 个答案:

答案 0 :(得分:0)

除非我遗漏了某些东西,否则解决方案对我来说似乎很简单。

处理不在套牌中的卡片的一种方法是将deck中该卡的值设置为超出范围值。

deck中项目值的有效范围是0-51。例如,定义

// You can use any number that is not in the range 0-51
const char INVALID_CARD = -1;

deck移除卡片时,请将卡片中的卡片值分配为INVALID_CARD。检查现有的卡片组时,请确保忽略值为INVALID_CARD的项目。

答案 1 :(得分:0)

而不是将卡片组视为char deck[SIZE],将卡片组重新定义为

char deck[SIZE];
int deck_count;

或作为结构:

typedef struct {
  char deck[SIZE];
  int n;
} stock;

然后创建操作股票的函数:

void stock_newdeck(stock *st);  // fresh deck of 52 cards: ordered
void stock_shuffle(stock *st);  // shuffle the n cards
int  stock_isempty(stock *st);  // any cards left?
char stock_draw(stock *st);     // draw the top card