Код
int cycle_length(int i, int j) {
int cycleLength = 0;
for (int k = i; k <= j; k++) {
cout << algorithm(k) << endl;
if (algorithm(k) > cycle_length) {
cycleLength = algorithm(k);
}
}
return cycleLength;
}
ISO C++ forbids comparison between pointer and integer [-fpermissive]
Я получил эту ошибку в этой строке if ( algorithm(k) > cycle_length)
,
Как это, однако, тот же код работает прямо в main()
?? и что значит эта ошибка ???
добавленной
Алгоритм — это функция, принимающая целочисленный ввод и возвращающая целое число.
int algorithm(int number1) {
int counter = 1, number = number1;
do {
if (number % 2 == 0) {
number = number / 2;
counter++;
} else {
number = (3 * number) + 1;
counter++;
}
} while (number != 1);
return counter;
}
Вы путаете имя функции с вашей локальной переменной с почти таким же именем:
int cycle_length(int i, int j)
{
int cycleLength
Ваша функция называется cycle_length
ваша переменная называется cycleLength
— пока вы используете cycle_length
дальше.
Сообщение об ошибке немного странно, потому что компилятор не «сравнивает имена переменных с именами функций, чтобы увидеть, есть ли подобное, а затем предлагает, что, возможно, вы просто ввели его неправильно» — он просто говорит: «Хм, вы сравнивая указатель функции [что вы получаете из имени функции] с целым числом, это не включено! «
Других решений пока нет …