这个程序是一个" Codebreaker"游戏。在程序的这一部分中,计算机检查玩家猜到的数字,将它们中的每一个与密码中的每一个数字进行比较,并确定该数字是否是正确的"或者只是"放错地方。"我无法让这部分正常工作。我写了#34的代码;纠正"并且"放错了地方"在不同的传递中,我知道我需要用一个字母替换原始变量,这样一个数字不会被检查为多于一个,而是替换为" y"或" z"。当我运行程序时,"的值正确"并且"放错了地方"不正确。我得到随机值。
correct_digits = 0;
misplaced_digits = 0;
misplaced_digit = false;
/* Get and validate the player's guess using "get_player_code()"; increment guess counter */
player_code = get_player_code();
++num_guesses;
for(int x=0;x<CODE_LENGTH;x++){
if(player_code[x]==secret_code[x]){
correct_digits++;
secret_code[x]='y';
}
}
for(int x=0;x<CODE_LENGTH;x++){
for(int i=0;i<CODE_LENGTH;i++){
if(player_code[i]==secret_code[i]){
misplaced_digits++;
secret_code[i]='z';
}
}
}
/* Print player's guess and number of correct/misplaced digits */
cout << setw(40) << player_code << setw(15) << correct_digits << setw(15) << misplaced_digits << '\n';
答案 0 :(得分:0)
假设player_code
和secret_code
的长度始终相同(如果player_code
更少,则会有未定义的行为)并假设您未向我们展示的所有代码是正确的,那么你需要做的就是修复这个检查:
if(player_code[i]==secret_code[i]){
您正在检查每个字符串中的相同字符。您希望将其中一个字符串中的字符与另一个中的每个字符进行比较。你的病情应该是:
if(player_code[x]==secret_code[i]){