#cpp #алгоритм #функции
Учусь программировать на c++. Возникла странная ошибка при работе с функциями: cannot resolve overloaded function 'max' based on conversion to type 'double' Сам код: #includeusing namespace std; void maxi(double max) { int i; i=0; float y[5]={3,-2,0.9,0.5,1}; max = -999999; for(i=0; i<5; ++i) { if(y[i] > max) { max = y[i]; } } } int main() { cout <<"max value:"<< maxi(max); return 0; } При очистке параметра max уже в функции main выдается другая ошибка.
Ответы
Ответ 1
В этом предложении cout <<"max value:"<< maxi(max); ^^^ вы используете имя max, которое вы не определили. С другой стороны, благодаря директиве using namespace std; вы вводите имена из пространства std в глобальное пространство имен. Видимо имя max, которое соответствует стандартному адноритму std::max в пространтсве имен std также было включено в глобальное пространство имен, и компилятор думает, что в предложении, показанном выше вы в качестве аргумента используете функцию max. Объявите переменную max в main Обратите внимание, что в функции maxi значение аргумента не используется. Оно перезаписывается в функции void maxi(double max) { int i; i=0; float y[5]={3,-2,0.9,0.5,1}; max = -999999; ^^^^^^^^^^^^^^ Так что нет никакого смысла объявлять параметр для функции, если его значение в функции не используется. Вы могли бы объявить локальную переменную в функции, как, например, void maxi() { int i; i=0; float y[5]={3,-2,0.9,0.5,1}; double max = -999999; ^^^^^^^^^^^^^^^^^^^^^ Кроме того в предложении cout <<"max value:"<< maxi(max); вы пытаетесь использовать результат работы функции. Поэтому функция должна иметь возвращаемое значение отличное от void. Ее определение могло бы выглядеть следующим образом double maxi() { int i; i=0; double y[5]={3,-2,0.9,0.5,1}; ^^^^^^ double max = -999999; //... return max; } Также нет никакого смысла объявлять переменную i вне цикла, так как она используется только в цикле. Имейте в виду, что в C++ уже имеется стандартный алгоритм std::max_element, объявленный в заголовке, который позволяет находить максимальное значение заданной последовательности.
Комментариев нет:
Отправить комментарий