C++ 在每个数组中查找最大值';s柱

C++ 在每个数组中查找最大值';s柱,c++,C++,目前我有一个2D数组,我需要找到每个数组列的最大值,并找到它们的和 我的代码似乎不能正常工作,因为我得到的是每行的最大值,而不是每列的最大值,而且程序有时会打印相同的值两次 我根据一篇教程编写了这段代码,我不知道我在哪里犯了错误。应该有基本的C++函数(循环,如果语句,数组)。 我的代码: #include <iostream> #include <algorithm> using namespace std; int main() { int n, m, a[

目前我有一个2D数组,我需要找到每个数组列的最大值,并找到它们的和

我的代码似乎不能正常工作,因为我得到的是每行的最大值,而不是每列的最大值,而且程序有时会打印相同的值两次

我根据一篇教程编写了这段代码,我不知道我在哪里犯了错误。应该有基本的C++函数(循环,如果语句,数组)。 我的代码:

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int n, m, a[10][10], sum = 0, max;
    cin >> n >> m;
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            cin >> a[j][i];
        }
    }
    for (int i = 0; i < m; i++) {
        max = a[0][i];

        for (int j = 0; j < n; j = j + 1) {
            if (a[j][i] >= max) {
                max = a[j][i];

                sum = sum + a[j][i];
                cout << max << endl; //control printing to see the values
            }
        }
    }
    cout << sum;
}

我需要得到的输出是
17
,但我现在得到的是
19

假设您的数组有
m
列和
n

int sum = 0, max = 0;

for( int i = 0 ; i < m ; ++i )
{
    max = 0;
    for( int j = 0 ; j < n ; ++j )
    {
        if(max < a [j][i])
        {
            max = a[j][i];
        }
    }
    sum += max;
}
int sum=0,max=0;
对于(int i=0;i
适当的缩进(由t.niese编辑)有望帮助您找出问题的一部分。对于其余部分,一些调试应该会有所帮助。顺便说一句,您在计算
sum
时有一个缺陷,除了你要问的问题外:如果最大值在列的第一行会发生什么?当数组限制为10x10个元素时,你为什么要求输入
m
n
?@Someprogrammerdude我想我修复了这部分。@TanveerBadar这项任务是我大学的任务,我们总是将数组限制为10x10。它仍然在计算每行的最大元素数,而不是每列的最大元素数。也许存储数组的代码正在翻转数组?尝试查看正在调试器中存储的数组。我的答案中的代码本身没有问题。好的,我设法解决了这个问题,但还有一个问题。如果在第一列和第二列中有相同的最大值,程序在第二列中取第二大值,我得到了错误的答案…是否要对最大值的所有出现次数求和?我算出了,这是我的错误,如果数组是n*m格式,程序没有访问最后一行。谢谢你的帮助!
int sum = 0, max = 0;

for( int i = 0 ; i < m ; ++i )
{
    max = 0;
    for( int j = 0 ; j < n ; ++j )
    {
        if(max < a [j][i])
        {
            max = a[j][i];
        }
    }
    sum += max;
}