【发布时间】:2021-04-11 17:29:43
【问题描述】:
我一直在尝试这样做,但问题是最终结果总是有问题或缺失。 我有很多 if 语句,我想看看是否可以通过使用 for 循环来减少它。
char matrix[3][3] = {
{'A','A','A'},{'B','A','B'},{'C','A','C'}
};
if (matrix[0][0] == 'A' && matrix[0][1] == 'A' && matrix[0][2] == 'A') {
cout << "Found!" << endl;
}
if 语句还有很多,我没有放在这里,因为它是相同的东西,只是不同的索引。
我试着做一个这样的 for 循环,
for (int i = 0; i < matrix[0][2]; i++) {
if (matrix[0][0] == matrix[0][1] && matrix[0][0] == matrix[0][2])
cout << "Found!" << endl;
break;
}
与将近 20 行的 if 语句相比,这看起来更有条理,但它仍然缺少一些部分。
例如在数组[0][1] 和[1][1] 和[2][1] 中都有字符'A'。
当相同字符垂直或水平出现在同一行时,如何将其实现到for循环中以打印出消息。
【问题讨论】:
-
你总是可以像
bool row_same = true; for(size_t i=0; i<3; i++) { row_same &= matrix[0][i] == 'A'; }一样去处理更复杂的事情。 -
@Joe 手动写出你所有的
if语句——我假设你已经有了它们,只是复制粘贴它们并更改了索引。然后看看索引在你的 if 语句中是如何变化的,例如哪些是从 0 到 2?哪个保持不变?然后将其编码为一个 for 循环。 -
我敢打赌if you try to explain your
forloop to your rubber duck,你的橡皮鸭会用它来解释问题。您是否尝试过向您的橡皮鸭解释您的代码,如果没有,为什么不呢? -
for (;matrix[0][0] == 'A' && matrix[0][1] == 'A' && matrix[0][2] == 'A';)
标签: c++ arrays for-loop if-statement multidimensional-array