2013-10-19 93 views
0

我有一些困难找出如何解决我的问题在这里,我想为什么不去这里,并要求你的专业人士的一些帮助。输出4套7上升订单和唯一的随机数

最重要的是,我只在学校学习C++几个星期,大致上我经历的是if/else,for/while/do循环,数组和显然更多基本的东西,所以我试图解决这个问题的主要问题是我的知识是否足够? 如果我阅读关于载体等的内容,这会更容易解决吗?

现在,我已经成功做的是排序,我解决了这样的数字: 基本上我使用的是一个冒泡排序算法(我认为)

for(int i=0; i<6; i++) 
{ 
    for(int j=0; j<6; j++) 
    { 
     if(slump[j]>random[j+1])   
     { 
      temp = random[j]; 
      slump[j] = random[j+1]; 
      slump[j+1] = random;   
     } 
    } 
} 

但是我做不到对于我的生活找出如何防止重复出现(可以重复行到行,但不在同一行)时分配每个索引从0-6随机数。

for(int j=0;j<7;j++) 
{ 
    random[j] = rand()%40+1; 
} 

我希望自己有点清楚,因为英语不是我的母语,请告诉我,如果我需要澄清任何事情。我希望我能找到一些关于如何解决这个问题的帮助,这里有一个不太复杂的解决方案。

回答

2

排序过程不会帮助您防止重复,因此必须在之前解决

首先确保没有重复的号码。当你得到所有你需要的数字。

为了确保没有随机数,有两个选项:生成每个号码

  • 后,核对已获得的数字。如果重复,丢弃它并得到一个新的随机数。

  • 由于您希望在40个范围内使用7个数字,只需将其作为订单使用即可。第一个数字在0-39之间选取,第二个数字在0-38之间,依此类推。已经使用的数量将被跳过(所以的3-5-2-4随机序列意味着数字序列3-6-2-7)

+0

否_duplicated_随机数字? – timrau

+0

作为一个经验法则,尝试将(*分析*)你的问题分成几个不同的,更小的(也许是众所周知的)问题。 – SJuan76

+0

@timrau你能稍微详细一点吗?很难理解你的问题。 – SJuan76

0

嗯,应该不会太难检查重复。

你可以尝试,例如以下:

for (int i = 0; i < 7; i++) 
{ 
    random[i] = rand%40 + 1; 
} 

for (int i = 0; i < 7; i++) 
{ 
    for (int j = 1; j < 7; j++) 
    { 
    if(random[i] == random[j]) 
    { 
     random[i] = rand%40 + 1; 
     i = i -1; 
     break; 
    } 
    } 
} 

我敢肯定这应该是一个profecceint支票的号码是否在随机[]一直重复。此外,即使矢量更有趣,使用起来也更容易,但它们不会使此操作更容易。

希望它有帮助。 =)

+0

当我尝试这个解决方案时,cmd只在运行时给我一个空白屏幕。 – Hummelmannen