c++ - 如何使用循环和数组在 C++ 中进行比较和检查

标签 c++ arrays loops

这是我新编辑的代码 我在处理存储在数组中的 X 和 O 的最终 if 循环时遇到了问题。我正在尝试检查数组中是否已经存在 X 或 O。如果有一个,它会要求用户进行另一次输入,然后重新开始,但是当我运行该程序时,会发生这种情况:

1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
Please Enter Box Number: 1
player X your number is 1
X | 2 | 3
4 | 5 | 6
7 | 8 | 9
Please Enter Box Number: 1
Please enter another Number2
player O your number is 1
O | 2 | 3
4 | 5 | 6
7 | 8 | 9
Please Enter Box Number:





char c;


        cout << "Please Enter Box Number: ";
        cin >> c;


        if (c > '9' || c < '0')
        {
            // error message
            cout << "please enter a number 1-9" << " ";
            cin >> c;
            cin.ignore(numeric_limits<int>::max(), '\n');

        }

        if (c < '9' || c > '0') 
        {
            int number = c - '0';

            if (board[number - 1] == 'X' || board[number - 1] == 'O') 
            {
                cout << "Please enter another Number";
                cin >> c;
                cin.ignore(numeric_limits<int>::max(), '\n');

            }
            else if (board[number -1] != 'X' || board[number - 1] != 'O' ) {
                if (player == 'X')
                { 
                    player = 'O';
                }
                else 
                {
                    player = 'X';
                }




                cout << "player " << player <<  " your number is " << number << endl;
                // Your implementation here...



                board[number - 1] = player;

            }


        }







    }

最佳答案

首先是第二题(简单的):

Return 退出当前函数。所以,在返回之后,你的函数中没有进一步的指令被执行。您应该删除 return 并将其余代码(如果输入无效则不应执行)放在 if 的 else block 中。

第一个问题:

  • 为什么要检查数组中每个位置的索引(如 board[7] = '8')。你已经知道位置了,你需要在每个单元格中标记的是使用它的玩家;例如设置值 'X'(玩家 1)、'O'(玩家 2)、' '(空)。

  • 如果您将输入的“c”转换为整数并将其用作索引,而不是九个“if”,会更容易。使用 ASCII 字符(我不知道这是否仍然适用于 WCHAR、UTF-8 等)你可以让它变得快速和肮脏:

    int k = c - '0';

    board[k] = player;


编辑: 考虑到检查方 block 是否尚未使用:

int k = c - '0';
if (board[k] == ' ') {
  board[k] = player;
} else {
  cout << "This square is already used";
}

关于c++ - 如何使用循环和数组在 C++ 中进行比较和检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6880251/

相关文章:

c++ - 在 C++ 中使用 'cin' 使数组与输入一样大

c++ - 数组损坏其字符 C++

c - 如何在数组中找到匹配值并将它们存储在新数组中?

javascript - 遍历对象数组,检查匹配参数并将匹配对象添加到新数组

javascript - 我在这个 javascript 循环操作中做错了什么?

PHP 在 while 循环中求和一个值,但有条件

c++ - Leetcode 28 - 实现 strStr() : question

c++ - QT读取XML文件,结构

c++ - Magick++ ErrorMissingDelegate

c++ - 从指向指针数组的指针中删除字符串时在运行时出错