循环工作/不起作用,不知道为什么C ++

时间:2013-12-16 21:45:10

标签: c++ loops for-loop while-loop loop-counter

我在此代码末尾附近遇到for循环问题。

循环用于刽子手游戏,并且循环基本上循环通过具有秘密字的char数组,并将用户猜测与char数组中的每个元素进行比较。如果找到它,它会更新输出以显示字母并将计数器重置为0,否则如果计数器等于密码字的长度,则表示循环找到{{ 1}}它应该向显示器添加一个(对于刽子手绞架)将错误的猜测放在错误的猜测数组中。

我在这里遇到的问题是,在大多数情况下,循环按预期工作,但偶尔它会读取正确的答案,因为它仍然是正确的将它放在错误的猜测数组中,以及增加绞架显示值。

这似乎是随机的,只有当我玩第二场比赛时。我认为这是计数器的一个问题,但我在char循环开始时将其重置为0,并在while循环中重置为零如果找到了正确答案。

所以我不知道为什么它会将正确的答案读成正确并仍然放在for数组中,因为那时的计数器应该是{{1 }}。这是代码:

wrongChoice

1 个答案:

答案 0 :(得分:0)

这里有一个猜测,但它是否只是/总是第一个给你问题的角色?

如果userGuess位于单词[]某处,则使用count作为检测器,但如果它位于word []中的第一个字符,则count仍然以与第一个字符错误时相同的方式递增。因此,在循环结束时,会选择错误选择的分支。真的你想要的是在循环结束后检查......不是循环的每次迭代!

试试这个:

        bool found = false;
        for(int i = 0; i < secretWord.length(); i++)
        {
            if(word[i] == tolower(userGuess))
            {
                userPrompt[i] = tolower(userGuess);
                found = true;
            }
        }

        if( !found )
        {
            display++;
            userChoice[guessCount - 1] = toupper(userGuess);
        }