将值存储到数组中

时间:2014-02-02 19:11:31

标签: c++ arrays string

我正在尝试将随机生成的数字存储到字符串newdeck中。然而,当我测试它时,所有输出的数字都不是从上面产生的随机数顺序(即代替5,24,10,33,41,它的0,1,2,3,4,5)。用户输入他们想要使用的套牌数量(int deck)。我想生成随机数numvalue,并将其存储到我的数组newdeck中。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在这一行:

 newdeck[numvalue] = numvalue;

你总是将一张特定的牌一遍又一遍地放回原来的位置。更糟糕的是:您访问字符串中不存在的元素。

如果您希望结果在totaldeck更改:

totaldeck[numvalue] = 0;

(这就是为什么你只得到零 - 你把它们自己放到结果中......),到:

totaldeck[loop] = numvalue;

不需要newdeck变量。要记住是否已经绘制了一张卡片,您可以尝试这样做:

std::vector<bool> drawn(52 * deck);
for (loop =0; loop < 52*deck; loop++)
{
    numvalue = rand()%(52*deck)+1;

    if (drawn[numvalue-1])
    {
        --loop;
        continue; //to be explicit
    }
    else 
    {
        suitvalue = numvalue % 4 + 1;
        drawn[numvalue-1] = true;
        totaldeck[loop] = numvalue;

        //...

此外,使用goto被认为是非常糟糕的编程习惯。这里避免它的最简单方法是在上面的代码片段中给出。但是,您应该以更易读的方式工作。

此外,您应该将代码划分为较小的函数。您可以更轻松地编写,理解和维护它们。