在Array中的列中查找最大值并在同一行中打印其他相应的值

时间:2015-04-03 17:00:14

标签: c++ arrays

我正在尝试使程序在数组的第二列中找到最大值并打印此值(下面的工作程序),但是也会在同一行中打印另一个相应的值。

#include<iostream>;

using namespace std;

int main()
{
   float array[3][2] = { { 16, 22 }, { 258, 1 }, { 42, 54 } };
   int i;
   float max = 0;

   for (i = 0; i<3; i++)
   {
      if(array[i][1] > max)
      {
         max = array[i][1];
      }
   }

   cout << "The maximum value in the array is " << max << endl;
   return 0;
}

4 个答案:

答案 0 :(得分:1)

将@JoachimPileborg的评论转换为答案。

  1. 除了保存最大值外,还要保存找到最大值的索引。

  2. 从索引中打印行的值。


  3. int main()
    {
       float array[3][2] = { { 16, 22 }, { 258, 1 }, { 42, 54 } };
       int i;
       float max = 0;
       int maxValueIndex = 0;
    
       for (i = 0; i<3; i++)
       {
          if(array[i][1] > max)
          {
             max = array[i][1];
             maxValueIndex = i;
          }
       }
    
       cout << "The maximum value in the array is " << max << endl;
       cout << "The other value in the array is " << array[maxValueIndex][0] << endl;
       return 0;
    }
    

答案 1 :(得分:1)

您只需存储行索引:

#include <iostream>;
using namespace std;

int main()
{
    float array[3][2] = { { 16, 22 }, { 258, 1 }, { 42, 54 } };
    int i;
    float max = 0;
    int row = 0;

    for (i = 0; i < 3; i++)
    {
        if (array[i][1] > max)
        {
            max = array[i][1];
            row = i;
        }
    }

    cout << "The maximum value in the array is " << max << endl;
    cout << "The other corresponding value in the same row is " << array[row][0] << endl;

    return 0;
}

请注意,您的代码会在假定所有正值的情况下找到最大值。如果不是这种情况,则应使用此代码:

#include <iostream>;
using namespace std;

int main()
{
    float array[3][2] = { { 16, 22 }, { 258, 1 }, { 42, 54 } };
    int i;
    float max = array[0][1];
    int row = 0;

    for (i = 1; i < 3; i++)
    {
        if (array[i][1] > max)
        {
            max = array[i][1];
            row = i;
        }
    }

    cout << "The maximum value in the array is " << max << endl;
    cout << "The other corresponding value in the same row is " << array[row][0] << endl;

    return 0;
}

答案 2 :(得分:0)

您还需要找到与最大元素对应的索引i。之后,您可以在for循环中使用cout

#include<iostream>;


using namespace std;


int main()

{

float array[3][2] = { { 16, 22 }, { 258, 1 }, { 42, 54 } };
int i;
int indmax;
float max = 0;

for (i = 0; i<3; i++)
{

    if(array[i][1] > max)
    {
        max = array[i][1];
        indmax=i;  
    }

}
cout << "The maximum value in the array is " << max << endl;
cout << "The row containing max values: ";
for(int j=0;j<2;j++)
    cout << array[indmax][j] << " ";   
cout << endl;  
return 0;
}

答案 3 :(得分:0)

使用标准算法std::max_element

#include <algorithm>
#include <iostream>

int main()
{
    float array[3][2] = { { 16, 22 }, { 258, 1 }, { 42, 54 } };

    auto it = std::max_element(std::begin(array), std::end(array),
    [](const auto& lhs, const auto& rhs) { return lhs[1] < rhs[1]; });

   std::cout << "The maximum value in the array is " << (*it)[1] << std::endl;
   std::cout << "other element in the array is " << (*it)[0] << std::endl;
}

Live demo

注意:代码在C ++ 14中,但也可以在以前的标准中重写。