我正在尝试使程序在数组的第二列中找到最大值并打印此值(下面的工作程序),但是也会在同一行中打印另一个相应的值。
#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;
}
答案 0 :(得分:1)
将@JoachimPileborg的评论转换为答案。
除了保存最大值外,还要保存找到最大值的索引。
从索引中打印行的值。
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;
}
注意:代码在C ++ 14中,但也可以在以前的标准中重写。