Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 查找2D数组C+中每一行的最大值+;_C++_Multidimensional Array_Max - Fatal编程技术网

C++ 查找2D数组C+中每一行的最大值+;

C++ 查找2D数组C+中每一行的最大值+;,c++,multidimensional-array,max,C++,Multidimensional Array,Max,我已经用这个方法找到了2D数组中每一行的最小值 void findLowest(int A[][Cm], int n, int m) { int min = A[0][0]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (A[i][j] < min) {

我已经用这个方法找到了2D数组中每一行的最小值

void findLowest(int A[][Cm], int n, int m)
{
    int min = A[0][0];
    for (int i = 0; i < n; i++)
    {
         for (int j = 0; j < m; j++)
         {
             if (A[i][j] < min)
             {
                 min = A[i][j];
             }
         }
     out << i << " row's lowest value " << min << endl;
    }
}
void findLowest(int A[][Cm],int n,int m)
{
int min=A[0][0];
对于(int i=0;iout这两个函数都返回整个数组而不是每行的结果(最大值或最小值),因为您设置了
max
一次而不是每行一次。您可以按如下方式获得每行的结果:

void findHighest(int A[][Cm], int n, int m)
{
     for (int i = 0; i < n; i++)
     {
         int max = A[i][0];
         for (int j = 1; j < m; j++)
         {
             if (A[i][j] > max)
             {
                max = A[i][j];
             }
         }
         // do something with max
     }
}
这将为您提供易于检查的所有值:

#include <algorithm>
#include <iostream>

enum { Cm = 2 };

void findHighest(int A[][Cm], int n, int m) {
  if (m <= 0) return;
  for (int i = 0; i < n; i++) {
    int max = *std::max_element(A[i], A[i] + m);
    std::cout << max << " ";
  }
}

int main() {
  int A[2][2] = {{1, 2}, {3, 4}};
  findHighest(A, 2, 2);
}
#包括
#包括
枚举{Cm=2};
无效findHighest(整数A[][Cm],整数n,整数m){

如果(m如果您的编译器支持C++11,那么对于具体数组,您可以使用以下替代方法,这是基于:

模板
无效的
最小最大值行(T常量(&arr)[N][M],T常量(&mincol)[N],T常量(&maxcol)[N]){
for(int i(0);i

您的测试数据因未清楚显示缺陷而有罪

行极小值以递减的形式出现,因此它们在每一行上都会得到更新

行最大值也出现在递减的值中,因此第一个值将继续获胜

正如其他人所指出的,您的函数会查找全局最小值/最大值,而不是每行极值


将min/max变量的初始化移到外部循环中。

如前所述,您的代码仅显示整个数组中的最大元素。 这是帮助您的代码

 void findHighest(int A[][Cm], int n, int m)
 {
    int max[n];
    max[0]=A[0][0];
    for (int i = 0; i < n; i++)
  {
      for (int j = 0; j < m; j++)
      {
         if (A[i][j] > max[i])
         {
            max[i] = A[i][j];
         }
     }
  cout << i << " row's highest value " << max[i] << endl;
 }
}
void findHighest(int A[][Cm],int n,int m)
{
int max[n];
max[0]=A[0][0];
对于(int i=0;imax[i])
{
max[i]=A[i][j];
}
}
cout{

inti,j;
int-arr[4][2]={(1,2)、(3,4)、(5,6)、(7,8)};
int max;
max=arr[0][0];

对于(int i=0;i)您的第一个示例只找到整个数组中的最小元素。如果您有一个最小值的解决方案,为什么不取一个*-1并通过您的函数运行它呢?如果几个简单的替换不能将其转换为最大值,则很可能您的最小值是错误的。这些代码不会“显示”任何内容。这两个函数都是无效的“展示"我的意思是当我把
out-Ummm放出来时,它会显示所有的最小值。如果我使用标准算法
max\u元素添加
out几乎+1,这就是我在结果文件中得到的结果,但是你没有处理m为0的路径情况。当你分配给
max
@feco时,这将导致UB。这不是你正在尝试的吗要获得最小值(或最大值)每行?@RichardHodges都添加了一个检查,谢谢。无论如何,这只是一个例子。这正是我想要得到的,但困扰我的是第一个函数显示了所有最小值,第二个函数只显示了第一个最大值,而这两个函数都使用相同的方法查找值。我已经检查过了。谢谢你的提示G,这似乎是问题。你在评论中说:行最小值是46, 41, 36,31, 26,减少。我不知道行最大值。也许你可以考虑一个赞成票。@ YVISDAUSTST + 1指出了“差异”的原因。这很好,但是OP并没有问如何同时找到Min和Max。@ VITAUT不是ANSW。呃,这是一个替代方案。未来的读者可能会从中受益。如果我回答了一个已经回答过的问题,那就不对了;)@101010你的直播演示在第15行有一个小错误;一个额外的方括号;)你能简单描述一下吗?
#include <algorithm>
#include <iostream>

enum { Cm = 2 };

void findHighest(int A[][Cm], int n, int m) {
  if (m <= 0) return;
  for (int i = 0; i < n; i++) {
    int max = *std::max_element(A[i], A[i] + m);
    std::cout << max << " ";
  }
}

int main() {
  int A[2][2] = {{1, 2}, {3, 4}};
  findHighest(A, 2, 2);
}
template<typename T, std::size_t N, std::size_t M>
void
minmax_row(T const (&arr)[N][M], T (&mincol)[N], T (&maxcol)[N]) {
  for(int i(0); i < N; ++i) {
    auto mnmx = std::minmax_element(std::begin(arr[i]), std::end(arr[i]));
    if(mnmx.first != std::end(arr[i]))  mincol[i] = *(mnmx.first);
    if(mnmx.second != std::end(arr[i])) maxcol[i] = *(mnmx.second);
  }
}
 void findHighest(int A[][Cm], int n, int m)
 {
    int max[n];
    max[0]=A[0][0];
    for (int i = 0; i < n; i++)
  {
      for (int j = 0; j < m; j++)
      {
         if (A[i][j] > max[i])
         {
            max[i] = A[i][j];
         }
     }
  cout << i << " row's highest value " << max[i] << endl;
 }
}
int i,j;

int arr[4][2]={(1,2),(3,4),(5,6),(7,8)};
int max;
max=arr[0][0];

for( int i=0; i<4; i++)
{
    for(int j=0; j<2; j++)
    {
        if(max<arr[i][j])
        {
            max=arr[i][j];

        }

    }

}

int min;
min=arr[0][0];

for(int i=0; i<4; i++)
{
    for(int j=0; j<2; j++)
    {
        if(min>arr[i][j])
        {
            min=arr[i][j];
        }
    }
}

cout<<"maximum number is:"<<max;
cout<<endl;
cout<<"Minimum Number is:"<<min;