Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 竞赛树生成中的选择无限循环_C++_Arrays_Duplicates_Infinite Loop_Swap - Fatal编程技术网

C++ 竞赛树生成中的选择无限循环

C++ 竞赛树生成中的选择无限循环,c++,arrays,duplicates,infinite-loop,swap,C++,Arrays,Duplicates,Infinite Loop,Swap,我想写一个程序,随机生成一个比赛树只使用挑战者的数量。我读到了另一个这样的问题,但答案描述了队伍将如何参与和播种球员,这有点过头了 我所面临的问题是,我的算法为1到4之间的值(包括1和4)生成一个无限循环。对于所有值,否则,程序将按需要运行 我的方法是为竞争对手的名字输入一系列字符串。然后,我会迭代每个位置,随机选择一个竞争对手的名字来占据该位置。因为我要交换名称,所以我必须检查数组中是否有重复的名称。我相信这就是我的代码遇到问题的地方 下面是实际确定树的代码段 for(int i = 0; i

我想写一个程序,随机生成一个比赛树只使用挑战者的数量。我读到了另一个这样的问题,但答案描述了队伍将如何参与和播种球员,这有点过头了

我所面临的问题是,我的算法为1到4之间的值(包括1和4)生成一个无限循环。对于所有值,否则,程序将按需要运行

我的方法是为竞争对手的名字输入一系列字符串。然后,我会迭代每个位置,随机选择一个竞争对手的名字来占据该位置。因为我要交换名称,所以我必须检查数组中是否有重复的名称。我相信这就是我的代码遇到问题的地方

下面是实际确定树的代码段

for(int i = 0; i < no_players;) {
    int index = rand() % ((no_players - i) + i);

    // randomly choose an element from the remainder
    string temp = players[index]; 
    bool unique = true;

    // check all the elements before the current position
    for(int j = 0; j < i; j++) {
        // if the element is already there, it is not unique
        if(players[j] == temp)
            unique = false;
    }

    // only if the element is unique, perform the swap
    if(unique) {
        players[index] = players[i];
        players[i] = temp;
        i++;
    }
}
for(int i=0;i

非常感谢您的帮助

您是否在循环运行时考虑过调试输出,以便您可以看到它在每个迭代中执行的操作?或者只是在调试器中逐行检查它并检查变量,看看它是否在做您认为它是做的事情?请写一个?。你所需要的只是换班和/或一起工作,这并不难=(@HostileFork我自己尝试过跟踪它,但没有通过调试器运行它。我实际上是用gedit编写并使用g++编译的。这会对代码产生什么影响?因为它对所有大于4的值都正常工作。@lux你是说用gedit编写并使用g++编译而不使用debu会产生什么影响GGER有?它会影响你不能得到你的代码的处理,可能会被StAdvsApps的人大喊,在你问之前要付出更多的努力。-)如果你想在Linux上使用一个开源的工具,那是一个相当不错的C++集成IDE,我建议你退房。您应该能够设置断点、单步、单步…等等。然后你可以看到它通过无限循环。@HostileFork好的,感谢你的反馈!我一定会努力的。