从数组中删除重复项

时间:2015-12-16 10:12:11

标签: c arrays

我正在尝试制作纸牌游戏,我的计划是制作一个首先包含1-10的数组,然后是JA,然后是颜色,所以三个不同的数组和不同的变量包含整数和字符。

然而,我现在已经遇到了问题,因为我想要从数组中删除重复项,但我真的不知道该怎么做,我已经阅读了一些事实,但我需要一个更好的解释,并且它会看起来代码,明智的。

这是我的代码到目前为止的样子:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{

    int arrays[10] = { 1,2,3,4,5,6,7,8,9,10 };
    char* color[4] = { "Diamond", "Spade", "Heart", "Clubs" };
    int i;
    int *number;


    srand(time(NULL));

    for (i = 0; i < 10; i++) {
        number = arrays[rand() % 10];
        if (number ) { //Its here where i want to remove the duplicates
            continue;
        }
        else {
            printf("%d ", number);
        }
    }
    system("pause");
    return 0;

}

我非常感谢有关如何操作的解释,我尝试使用包含数组[i]值的变量,但随后将删除所有数字。

2 个答案:

答案 0 :(得分:1)

我认为最好创建所有卡片的一个数组(如deck)然后shuffle数组,而不是使用随机选择.. 然后你就可以拿出前10张卡而不需要重复。

理论上,随机选择,您可以选择已经&#34;绘制&#34;的每张时间卡,这将浪费时间(你抽出的牌越多,你击中未抽牌的机会就越少)。 / p>

答案 1 :(得分:0)

我认为你的意思是在循环中,如果你有&#34;画出&#34;一个号码,你不想再画一个相同的号码?然后你可以有另一个带有标志的数组,说明索引是否已被&#34;绘制&#34;之前,如果有,那么再次画画。