我的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
,因为更改它会影响外循环的下一次迭代(获得猜测并再次进行比较)-我只是向您展示了方式。