我的Bulls and Cows项目几乎完成了,但是,如果我输入一个单词或一个带有字母或数字重复的数字序列,则代码的“牛”部分会弄乱。例如:考虑以下



如您所见,输入“ozzo”后,母牛的值应为2,而不是4。
如何解决此问题而不必更改整个代码?

for (size_t i = 0; i != startg.getSize(); ++i){
    if (guess[i] == origWord[i]){
        bullCtr++;
    } else {
        for (size_t j = 0; j != startg.getSize(); ++j){
            if (origWord[i] == guess[j]){
                cowCtr++;
            }
        }
    }
}

应用修复后的代码:
for (size_t i = 0; i != startg.getSize(); ++i){
    if (guess[i] == origWord[i]){
        bullCtr++;
    } else {
        for (size_t j = 0; j != startg.getSize(); ++j){
            if (origWord[i] == guess[j]){
                origWord[i] = 'X';
                cowCtr++;
            }
        }
    }
    origWord = origWordcpy;
}

最佳答案

您的母牛检查有问题。

我为方便起见(不完全是)要做的是这个(我只是在谈论else语句):

for(unsigned int j = 0 ; j != startg.getSize() ; j++)
{
    if(origWord[i] == guess[j])
    {
         origWord[i] = 1; //Just assigning a certain value there to mark that we've already did something with it
         cowCtr++;
    }
}

那应该做的工作。

编辑:

您显然应该使用一个临时字符串而不是origWord,因为更改它会影响外循环的下一次迭代(获得猜测并再次进行比较)-我只是向您展示了方式。

10-08 15:12