2015-12-16 236 views
-3

我试图制作一个纸牌游戏,我的计划是制作一个数组,首先保存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]的数值变量,但那么所有的号码将被删除。

+4

在你的例子中,你没有任何重复,你是什么意思*删除重复*?请提供一个例子,例如:'number == 5' - >我希望X发生。 – BeyelerStudios

+2

“从数组中删除重复项”。您的阵列不包含任何重复项。你能解释一下你的意思吗? – kaylum

+0

@JoachimPileborg你是对的,我正在删除它 – user3085931

回答

0

我假设你是指在循环中,如果你已经“画出”一个数字,你不想再画出相同的数字?然后你可以用另一个带有标志的数组来表示索引之前是否已经“绘制”过,如果它再次被绘制。

1

我认为,这将是最好创建的所有卡(如甲板)一个数组,然后shuffle的阵列,而不是使用随机选择.. 然后你就可以取前10张卡,没有任何重复。

理论上随机选择,你可以选择一个已经“绘制”每一次卡,这将是浪费时间(越卡,你抽的机会就越少你打不拉卡)。