Много проблем с вашим кодом (это даже не C ++). Но проблема, которая вызывает ваш текущий вопрос, заключается в том, что вы должны инициализировать sum
в ноль. на данный момент у вас есть значения мусора в сумме.
int sum[num] = {0};
Некоторые другие проблемы
int num=pow(n,n);
Это вычисляет n
в степени n
, но есть только n
квадратные суммы. Так что это было бы лучше
int sum[n*n] = {0};
Но большая проблема, которая делает ваш код недопустимым в C ++, состоит в том, что в измерениях массива C ++ должны быть постоянные времени компиляции , а не переменные. Так что это
int hist[n][n];
и это
int sum[num];
не являются законными C ++. Они допустимы в C, поэтому ваш компилятор принимает их, но не каждый компилятор C ++ будет. Поскольку вы пытаетесь написать код на C ++, вы должны использовать vector
. Вот ваш код, переписанный для использования векторов.
#include <vector>
using std::vector;
...
vector<vector<int>> hist(n, vector<int>(n));
...
vector<int> sum(num, 0);
...
Вот и все, что не нужно менять.