Форум программистов, компьютерный форум CyberForum.ru

Нахождение корня методом хорд - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.60
TaYloR
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 38
11.10.2010, 14:50     Нахождение корня методом хорд #1
Помогите дописать программу, Билдер в 5-ой строке выдаёт синтаксическую ошибку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream.h>
#include<conio.h>
#include<math.h>
int main(){
        double f(double x){
                return pow(x,3)+3*pow(x,2)-4*x-12;
        }
        double findRoot(a, b, eps)
        {
                while(fabs(b - a) > eps)
                        {
                        a = b - (b - a) * f(b)/(f(b) - f(a));
                        b = a - (a - b) * f(a)/(f(a) - f(b));
                        }
                return b;
        }
 
double a, b, eps;
cout<<"Vvedite a, b, eps: ";
cin<<a<<b<<eps;
cout<<"Koren' = "<<findRoot(a, b, eps);
getch();
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
11.10.2010, 15:12     Нахождение корня методом хорд #2
Нельзя оглашать/определять локальные ф-ции, т.е. ф-ции, оглашённые в определении другой.
TaYloR
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 38
11.10.2010, 16:18  [ТС]     Нахождение корня методом хорд #3
То есть? можешь показать в коде ошибку, функция double f(double x) ведь не оглашается в findRoot
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
11.10.2010, 16:51     Нахождение корня методом хорд #4
Зделай функции глбальными,тоесть создай их вне главной функции main,так же параметры функции findRoot должны иметь тип.
Как то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<iostream.h>
#include<conio.h>
#include<math.h>
using namespace std;
double f(double x)
{
    return pow(x,3)+3*pow(x,2)-4*x-12;
}
double findRoot(double a, double b, double eps)
{
     while(fabs(b - a) > eps)
     {
         a = b - (b - a) * f(b)/(f(b) - f(a));
         b = a - (a - b) * f(a)/(f(a) - f(b));
     }
     return b;
}
int main()
{
double a, b, eps;
cout<<"Vvedite a, b, eps: ";
cin>>a>>b>>eps;
cout<<"Koren' = "<<findRoot(a, b, eps);
getch();
return 0;
}
TaYloR
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 38
11.10.2010, 17:30  [ТС]     Нахождение корня методом хорд #5
Спасибо. А можешь посмотреть, почему на отрезке [-4.3, -2.4] прога выдаёт ответ -2 вместо -3? на остальных промежутках работает
Yandex
Объявления
11.10.2010, 17:30     Нахождение корня методом хорд
Ответ Создать тему
Опции темы

Текущее время: 12:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru