Я столкнулся с: Ошибка 2 ошибка C3861: «FX»: идентификатор не найден

0

я не знаю, как определить функцию в cpp, но, как обычно, я определил мое:

#include<iostream>;
#include<Windows.h>;
using namespace std;
int main(){

int n;
int power;

//f(x) = x^power-n=0
cout << "please enter number of root: " << endl;
cin >> power;
cout << "what number you want to get root: "<< endl;
cin >> n;
double x = 2;//it the first x0 that newton algorithm needs

for (int i = 0; i<20000 ;i++)
{
   //f(x) = x^power-n=0 , f'(x) = 2*x //fx:x^power
   x = x - (fx(power,x) - n)/dif(power,x);
}
cout << "answer is " << x << endl;
return 0;

}

double fx (int power,int x){
for (int i = 1; i<power; i++)
{
    x = x*x;    
}
return x;
}

double dif (int power,int x){
//f(x) = x^power-n=0 -> f'(x) = power * x^(power-1)
if(power>1)
{
     for(int i = 1; i<power-1 ;i++){
     x = x*x;
     }
x = x*power;
return x;
}
return 1;
}

и я столкнулся с двумя ошибками, которые говорят: Ошибка 2 ошибки C3861: 'fx': идентификатор не найден Ошибка 4 ошибки C3861: 'diff': идентификатор не найден, так что я должен делать?

  • 0
    Вы знакомы с прототипами функций?
  • 0
    В C ++ вам нужно объявить что-то, прежде чем вы сможете его использовать (определение все еще может прийти после). Так что либо добавьте прототип для fx и dif перед main либо переместите их перед main .
Показать ещё 3 комментария
Теги:

2 ответа

1

Заявлять объявления функций

double fx (int power,int x);
double dif (int power,int x);

перед их использованием.

using namespace std;

double fx (int power,int x);
double dif (int power,int x);

int main(){

Теперь ваши функции неизвестны для компилятора, где вы пытаетесь их вызвать.

0

Любое имя должно быть объявлено до его использования. Вы используете имя функции fx но после использования своего имени вы поместили его объявление (которое в то же время его определение). Место перед основной декларацией

double fx (int power,int x);

То же самое относится к относительной функции dif

Ещё вопросы

Сообщество Overcoder
Наверх
Меню