c - 从数组中删除重复项

标签 c arrays

我正在尝试制作一个纸牌游戏,我的计划是制作一个数组,首先保存 1-10,然后是 J-A,然后是颜色,因此三个不同的数组和带有整数和字符的不同变量。

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

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

#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]的值的变量,但随后所有数字都将被删除。

最佳答案

我认为最好创建一个包含所有卡片(例如甲板)的数组,然后 shuffle数组,而不是使用随机选择.. 然后你就可以拿走前10张牌,没有任何重复。

理论上随机选择,你每次都可以选择已经“抽到”的牌,这会浪费时间(抽到的牌越多,碰到未抽到的牌的机会就越少)。

关于c - 从数组中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34309177/

相关文章:

c - 获取用户输入时出现段错误?

c - 在另一个结构中向前声明的结构数组

android - 从android中的Multiautocomplete向数组添加值

javascript - Vue.js - 从数组中获取 N 个元素 - 未定义

arrays - 适用于每种方法的Dart编程语法

c - 简单 C 程序中的有点深奥的 gcc 错误

c - QSorting a malloc'd array of structures?

c++ - 如何将 uint8_t(SDL 中的 Uint8)转换为字符串?

arrays - 在 n 个元素的数组中打印长度为 k 的所有子集的高效算法

php - 如何检查数组是否是特定对象的集合?