float allmin[column];
float allmax[column];
float min= std::numeric_limits<float>::max();
float max= std::numeric_limits<float>::min();
for(int y = 0; y < column; y++)
{
for(int x = 0; x < row; x++)
{
allmin[y] = std::min(matrix[x][y], min);
allmax[y] = std::max(matrix[x][y], max);
}
cout << "Mins " << allmin[y] << "\n";
}
我需要每列中的最小元素。我的矩阵是 250x6 ,它打印的是矩阵的最后一行。
最佳答案
你需要两个更正:
不要对每一列使用相同的变量,而是使用不同的变量,例如直接使用 allmin
和 allmax
行。
在进入循环之前初始化它。一个经典的解决方案是用行的第一个元素对其进行初始化,然后检查循环中的每个下一个元素。
for(int y = 0; y < column; y++)
{
allmin[y] = matrix[0][y];
allmax[y] = matrix[0][y];
for(int x = 1; x < row; x++)
{
allmin[y] = std::min(matrix[x][y], allmin[y]);
allmax[y] = std::max(matrix[x][y], allmax[y]);
}
cout << "Mins " << allmin[y] << "\n";
}
关于c++ - 二维数组的最小/最大元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36759559/