有人告诉我这里出了什么问题吗?我正在尝试查找所有行中的最大元素,但是,largest2只是一直设置为maximum的最新迭代。我不知道为什么。目标是找到所有行中最大的元素。然后,将该值与所有列中的最大值进行比较,并输出整个数组中的最大值。如果我能弄清楚这部分,我想剩下的就可以解决。有人有提示吗?
for (row = 0; row < NUMBER_OF_ROWS; row++) {
largest = matrix[row][0];
largest2 = 0;
largest3 = 0;
for (col = 1; col < NUMBER_OF_COLUMNS; col++)
if (largest < matrix[row][col])
largest = matrix[row][col];
if (largest2 < largest)
largest2 = largest;
cout << "Largest element in row is: " << largest << endl;
}
cout << "largest element in all rows is: " << largest2;
答案 0 :(得分:0)
您正在外部循环中重新初始化largest2
,从而丢失了先前迭代的结果。因此,最后的cout
仅显示最后一次迭代的结果,而不是所有迭代的结果。
尝试以下方法:
largest2 = 0; // <-- moved outside the outer loop!
for (row = 0; row < NUMBER_OF_ROWS; row++) {
largest = matrix[row][0];
for (col = 1; col < NUMBER_OF_COLUMNS; col++) {
if (largest < matrix[row][col])
largest = matrix[row][col];
}
if (largest2 < largest)
largest2 = largest;
cout << "Largest element in row is: " << largest << endl;
}
cout << "largest element in all rows is: " << largest2;
话虽如此,您可以考虑使用std::max_element()
和std::max()
清理此代码,而不是手动循环/比较值:
#include <algorithm>
largest2 = 0;
for (row = 0; row < NUMBER_OF_ROWS; row++) {
largest = *std::max_element(&(matrix[row][0]), &(matrix[row][NUMBER_OF_COLUMNS]));
largest2 = std::max(largest, largest2);
cout << "Largest element in row is: " << largest << endl;
}
cout << "largest element in all rows is: " << largest2;