массивы — компилятор C ++ отклоняет мой код из-за ошибки определения в функции int main ()

Я новичок в C ++, и я пытаюсь выучить его для вступительных испытаний в моей школе, чтобы пройти курс информатики, который я хочу.
Мне пришлось написать программу, которая создала бы массив и использовала значения, которые они мне дали для строк и столбцов.
Программа использует функцию, чтобы найти сумму наибольшего ряда целых чисел.

 #include <iostream>

using namespace std;

int findMaxSumArray (int arr[3][3])
{
int sum1, sum2 = 0;
int i, j = 1;
int row = 3;
int col = 3;
for (i = 0; i < row; ++i)
{
sum1 = sum1 + arr[1][i];
}
for (j = 2; j < col; ++j)
{
for (i = 0; i < row; ++i)
{
sum2 = sum2 + arr[j][i];
}
if (sum2 > sum1)
{
sum1 = sum2;
}
}
return sum1;
}

int main ()
{

int arr[3][3] = { {1, 2, 3}, {2, 3, 4}, {5, 6, 7} };

cout << findMaxSumArray(arr);
}

К этому моменту я получил свой код для возврата правильного ответа на другие онлайн-компиляторы, но тот, который используется для теста, продолжает выдавать мне эту ошибку. Я рассмотрел причины ошибки, и все они кажутся несвязанными, включая два файла, ссылающихся на main вместе.
Вот ошибки, которые я получаю:

Syntax Error(s)
prog.cpp: In function 'int main()':
prog.cpp:46:5: error: redefinition of 'int main()'
int main() {
^
prog.cpp:38:5: note: 'int main()' previously defined here
int main ()
^

Я немного растерялся из-за того, почему я мог получить эту ошибку на некоторых, но не на всех компиляторах. Я не полностью понимаю C ++, поскольку я изучаю это. Может ли кто-нибудь из вас пролить свет на эту проблему?

0

Решение

Это не связано с вашим вопросом, но есть еще одна проблема в вашем коде — вы используете неинициализированную локальную переменную.

Несмотря на то, что это может выглядеть, эта строка кода не инициализируется sum1, он только объявит это:

int sum1, sum2 = 0;

Чтобы сделать это более понятным, мы могли бы переписать его следующим образом: значение будет таким же:

int sum1;
int sum2 = 0;

Локальные переменные не получают нулевой инициализированный по умолчанию (как глобальные переменные), это означает, что они будут иметь некоторое значение, но мы не можем предсказать его.

Как вы можете догадаться, используя var1 не даст ожидаемых результатов.

sum1 = sum1 + arr[1][i];  //!!

Вместо этого это вызовет странные ошибки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]