计算正确和错位的数字

时间:2018-03-01 23:59:24

标签: c++

这个程序是一个" 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';

1 个答案:

答案 0 :(得分:0)

假设player_codesecret_code的长度始终相同(如果player_code更少,则会有未定义的行为)并假设您未向我们展示的所有代码是正确的,那么你需要做的就是修复这个检查:

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

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

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