计算正确和放错位置的数字

Counting correct and misplaced digits

本文关键字:位置 数字 错位 计算      更新时间:2023-10-16

这个程序是一个"密码破译者"游戏。在程序的这一部分中,计算机检查玩家猜出的数字,将它们中的每一个与密码中的每个数字进行比较,并确定该数字是"正确"还是只是"放错地方"。我无法使此部分正常工作。我在不同的传递中编写了"正确"和"放错位置"的代码,我知道我需要用字母替换原始变量,这样就不会将一个数字检查为多个数字,而是替换为"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';

假设player_codesecret_code的长度始终相同(如果player_code更少,您将有未定义的行为(,并假设您没有向我们显示的所有代码都是正确的,那么您需要做的就是修复此检查:

if(player_code[i]==secret_code[i]){

您正在检查每个字符串中的相同字符。您希望将其中一个字符串中的字符与另一个字符串中的每个字符进行比较。您的条件应该是:

if(player_code[x]==secret_code[i]){