如何在c++中使用带开关的数组
How to use an array with switch in c++?
所以我的问题是,我试图在hand1[o](从第一个牌数组[]中随机抽取5个数字)之后获得数组。进入开关,以检测是否为刷新。例如,如果hand1[1]-hand1[0]的开关=1;hand1[2]-hand[1]=1…等等printf("从1~5"开始冲洗")。
然而,tbh,我甚至不确定在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("nn");
}
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("nn");
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("nn");
}
void corrida()
{
switch (hand1)
{
case (hand1[1] - hand1[0] = 1) :
}
}
您没有正确使用switch
。
switch语句的思想是采用一个可能具有多个值的表达式,然后对每种可能性执行不同的操作。在C++中,只允许切换基本上是整数的东西:int
或char
类型1,而不是字符串(Java允许您这样做)或数组。
但是,switch
不适合在这里使用,因为您对同时比较多个表达式的值感兴趣。您最好使用具有多个表达式的if
结构。类似于:
if(hand1[1] - hand1[0] == 1 && hand1[2] - hand1[1] == 1 && ...)
您还可以通过使用一个简短的"刷新查找"算法来提高可读性,如下所示:
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
,但我不知道你为什么要打开。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 使用开关或定义函数数组 - 更快
- 使用指向成员的指针数组还是使用开关更好
- 通过使用函子数组来摆脱开关情况
- 初始化开关大小写语句中的数组
- 如何在c++中使用带开关的数组
- 从C++中的开关情况返回二维数组