我无法从此函数获得正确的回报
I'm having trouble getting the correct return from this function
我正在创建一个井字游戏程序。我有不同的功能来测试不同的可能结果。 当我测试我的对角线可能性时,它工作正常。但是,当我尝试测试行或列时,它总是返回 0。我认为这是因为我的返回语句和中断语句在错误的位置,但我找不到正确的位置。
int testCol (int board[3][3]){//test cols for win
int b = 0;
int c = 0;
for (b = 0; b < 3; b++){
if (board[0][b] == 1 && board[1][b] == 1 && board[2][b] == 1){//test player 1
return 1;
cout << "I work" << endl;
break;
}
else if(board[0][b] == 2 && board[1][b] == 2 && board[2][b] == 2){//test player 2
return 2;
break;
}
else{//if none are true return no win
return 0;
}
}
}
两件事;您需要将return 0
移出循环。否则,您将永远无法测试所有可能性。其次,您的输出语句在 return
之后,因此无法访问。
return
之后不需要 break
语句。函数中的最后返回似乎是函数的错误状态,因此您可以将其排除在循环之外。第一个分支if
输出语句应位于返回之前。
int testCol (int board[3][3]){//test cols for win
int b = 0;
int c = 0;
for (b = 0; b < 3; b++){
if (board[0][b] == 1 && board[1][b] == 1 && board[2][b] == 1){//test player 1
cout << "I work" << endl;
return 1;
}
else if(board[0][b] == 2 && board[1][b] == 2 && board[2][b] == 2){//test player 2
return 2;
}
}
return 0;
}
当你找到一整列时,你会提前返回。如果没有入选者,则在测试所有列后返回 0。
这里是固定版本。
int testCol (int board[3][3]){//test cols for win
for (int b = 0; b < 3; b++){
if (board[0][b] == 1 && board[1][b] == 1 && board[2][b] == 1){//test player 1
return 1;
}
else if(board[0][b] == 2 && board[1][b] == 2 && board[2][b] == 2){//test player 2
return 2;
}
}
return 0;
}
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- C++ 模板函数无法将"std:string"转换为"double"作为回报
- 我可以制作一个基于孩子具有不同回报的虚函数吗?
- 使用具有不同类型不同回报的模板函数不起作用
- 我无法从此函数获得正确的回报
- 修改其参数的函数的完美回报
- 无法将字符串转换为 int 作为回报。在 int 返回函数 getsocial() 中没有声明任何字符串变量