二维数组的最小/最大元素
Min/max element of 2D array
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";
}
因为语句allmin[y] = std::min(matrix[x][y], min);
,所以matrix[x][y] is always small than
min(std::numeric_limits::max()) 每次都, so when internal loop execute,
allmin[y] is updated to ·matrix[x][y]
,所以最后allmin[y]
更新为 matrix[259][y]
(y
行的最后一列)。 allmax[y] = std::max(matrix[x][y], max);
也有同样的问题。
您应该将代码更改为``` 浮点全部[列]; 浮点全部最大值[列]; 浮点最小值= std::numeric_limits::max(); float max= std::numeric_limits::min();
for(int y = 0; y < column; y++)
{
allmin[y] = min
allmax[y] = max
for(int x = 0; x < row; x++)
{
allmin[y] = std::min(matrix[x][y], allmin[y]); //allmin[y] always store the min value has meet before
allmax[y] = std::max(matrix[x][y], allmax[y]); //allmax[y] always store the max value has meet before
}
cout << "Mins " << allmin[y] << "n";
}
一切都会好起来
相关文章:
- 将二维数组的所有元素插入到一维数组中
- 元素在二维数组 c++ 中的出现次数
- 在二维数组中查找第二大元素
- 在给定元素在螺旋上的位置的情况下,在二维数组中查找元素
- 如何为映射和priority_queue编写比较器,其中元素是二维数组
- 如何将 50 行和 50 列的二维数组编码为一个为元素随机分配星号的函数?
- 如何删除二维数组中的元素
- 我无法将二维数组的两个元素的差异分配给C++中其他数组的元素?
- 在 c 和 c++ 中,二维数组的元素是什么类型?
- 如何在默认和二维数组中找到顺序扩大元素的位置
- C++ 中二维数组中未知数量的元素
- 是一个二维数组的名称,它在C++中的第一个元素的地址
- 从二维数组中给定的索引中求对角线元素的和
- 二维数组的最小/最大元素
- 随机修改二维数组元素
- 二维数组:二维数组的子平方的元素之和
- 将二维数组元素复制到另一个具有其他大小的二维数组中
- 如何将元素添加到二维数组/矩阵的随机位置
- C++:用满足特定要求的二维数组的元素制作数组
- 用c++将文件的元素加载到二维数组中