gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:18:21 24 4
gpt4 key购买 nike

这是我新编辑的代码 我在处理存储在数组中的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com