Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
5年前关闭。
所以我的问题是我试图获得在hand1 [o]之后得到的数组(从第一个纸牌数组[]中随机抽取5个数字。为了检测是否为同花顺,进入了一个开关。
例如,如果hand1 [1]的开关-hand1 [0] = 1; hand1 [2]-hand [1] = 1 ...等等
printf(“从1到5刷新”)。
但是,我什至不知道在switch()或void corrida()的括号内放什么。
我尝试放置hand1 []或hand1 [],但它表示hand1不是恒定值。
附言我知道有些东西是西班牙语的(因为这是西班牙语课)
您还可以通过使用简短的“ flush-finding”算法来使其更加可读,如下所示:
请注意,我尚未测试此代码。这只是一个总的想法。请注意,正如Baldrickk在评论中指出的那样,该方法仅在
1我相信您也可以打开
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
5年前关闭。
所以我的问题是我试图获得在hand1 [o]之后得到的数组(从第一个纸牌数组[]中随机抽取5个数字。为了检测是否为同花顺,进入了一个开关。
例如,如果hand1 [1]的开关-hand1 [0] = 1; hand1 [2]-hand [1] = 1 ...等等
printf(“从1到5刷新”)。
但是,我什至不知道在switch()或void corrida()的括号内放什么。
我尝试放置hand1 []或hand1 [],但它表示hand1不是恒定值。
附言我知道有些东西是西班牙语的(因为这是西班牙语课)
void baraja();
void jugadores();
void jugadores(k);
int cards[52] = { 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13 };
int hand1[5];
int x, y;
int l, k, z;
int main()
{
srand(time(0));
baraja();
jugadores();
}
void baraja()
{
for (l = 1; l <= 52; l++)
{
x = rand() % 52;
y = rand() % 52;
int temp = cards[x];
cards[x] = cards[y];
cards[y] = temp;
}
printf("La baraja revuelta es:\n");
for (k = 0; k <= 51; k++)
{
printf("%d ", cards[k]);
}
printf("\n\n");
}
void jugadores(k)
{
int o, n = 5;
printf("Tus cartas son:\n");
for (o = 0; o <= 4; o++)
{
k = rand() % 52;
printf("%d ", cards[k]);
hand1[o] = cards[k];
}
printf("\n\n");
for (o = 0; o < n ; o++)
{
for (z = 1; z < (n - o); z++)
if (hand1[z - 1] > hand1[z])
{
int temp = hand1[z - 1];
hand1[z - 1] = hand1[z];
hand1[z] = temp;
}
}
printf("Tus cartas en orden incremental son:\n");
for (o = 0; o <= 4; o++)
{
printf("%d ", hand1[o]);
}
printf("\n\n");
}
void corrida()
{
switch (hand1)
{
case (hand1[1] - hand1[0] = 1) :
}
}
最佳答案
您没有正确使用switch
。
switch语句的想法是采用一个可以具有多个值的表达式,然后对每种可能性执行不同的操作。在C ++中,只允许您打开基本上是整数的内容:int
或char
types1,而不是在此处尝试进行操作的字符串(数组(Java将允许您这样做))。
但是,switch
不适合在这里使用,因为您有兴趣同时比较多个表达式的值。使用带有多个表达式的if
结构会更好。就像是:
if(hand1[1] - hand1[0] == 1 && hand1[2] - hand1[1] == 1 && ...)
您还可以通过使用简短的“ flush-finding”算法来使其更加可读,如下所示:
bool hasFlush(){
for(int i = 1; i < length-of-hand1; i++){
if(hand1[i] - hand1[i-1] != 1) return false;
}
return true;
}
请注意,我尚未测试此代码。这只是一个总的想法。请注意,正如Baldrickk在评论中指出的那样,该方法仅在
hand1
以升序排序时才有效。即使示例手{2, 4, 3, 5, 1}
显然是同花,也不会被检测为同花。有一些方法可以修改算法以使其工作而无需排序。1我相信您也可以打开
bool
,但是我不知道为什么要这么做。关于c++ - 如何在C++中使用带有switch的数组? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26660077/
10-12 19:10