如何在c++中使用循环和数组进行比较和检查
How to compare and check in c++ using loops and array
这是我的新编辑的代码,我有麻烦与我的最后的if循环的X和O的存储在一个数组内。我试图检查是否有一个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块中。
第一个问题是:为什么要检查数组中每个位置的索引(如board[7] = '8')。你已经知道了位置,你需要在每个单元格中标记使用它的玩家;例如设置'X'(玩家1),'O'(玩家2),' '(空)的值。
如果您将输入'c'转换为整数并将其用作索引,而不是9个"if",则会更容易。使用ASCII字符(我不知道这是否仍然适用于WCHAR, UTF-8等),您可以使其快速而简单:
int k = c - '0';
board[k] = player;
编辑:考虑检查方框是否已被使用:
int k = c - '0';
if (board[k] == ' ') {
board[k] = player;
} else {
cout << "This square is already used";
}
要循环返回,直到输入一个有效值为止,您可以这样做:
int number = 10;
while( ( number > 9 ) || ( number < 0 ) )
{
std::cout << "Please Enter Box Number: ";
std::cin >> number;
}
std::cout << "Your number is " << number << std::endl;
我不太确定你问的另一部分是什么。如果/当我这样做时,我会编辑我的回复。
http://www.asciitable.com/
如果您查看ASCII图表,您会注意到所有字符都有一个十进制值。因此,当你的老师从用户输入的内容中减去"0"时,他实际上是在做"1":
int number = (int)'1' - (int)'0'; // x will equal 1
你的数组可以使用[]符号直接访问,所以:
board[number] = player
相关文章:
- 试图让变量检查数组中的某些内容
- 如何在C++中检查2D数组中负值的输入验证
- 使用for循环检查数组中的重复项
- 检查TCHAR数组输入是否为带符号整数C++
- std::数组边界检查如何工作?
- 检查输入 std::array 指针数据是否等于某个常量数组
- 给定一个大小为 N 的数组 S,检查是否可以将序列拆分为两个序列
- C++ 检查结果数组中有多少次数字
- 检查数组中是否有字符串中的值,如果没有,则添加它
- 有没有办法在c ++中清除空数组,请检查下面的代码以获取说明
- 如何检查一个字符是否与字符数组中的另一个字符匹配?
- 如何检查二维数组上的周围数字?
- 检查反向数组是否与原始数组相同
- 如何检查cin是否与数组中的一组数字匹配
- 如何检查数组中是否没有值
- 如何检查字节数组是protobuf序列化字节数组还是普通字节数组
- 检查彩虹数组(检查数组的反向样式是否与自身匹配)
- 使用数组检查连续性
- c++ 根据随机生成的数组检查用户输入的值
- 使用字符串数组检查用户输入