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

Нужна помощь в исправлении - C++

Восстановить пароль Регистрация
 
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
09.11.2011, 20:19     Нужна помощь в исправлении #1
эта программа расчитывает значения отрезка интегрирования (x1, x2) один для всех трех интегралов, помогите сделать так, чтобы нужно было вводить отдельно отрезок для каждого интеграла.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <math.h>
#include <iostream>
using namespace std;
double f(double);
double Integ1(double (*f)(double), double a, double b, double e , int &n)
{
    int i;
    n=4;
    double count=1.0;
    double s1=0.0, s2=0.0, h;
    if (a==b)
    return 0;
        if (b<a)
            {
                count=a;
                a=b;
                b=count;
                count=-1.0;
            }
        h=(b-a)/4;
        for (i=1; i<=4; i++)
            s2=s2+h*f(a+i*h-h/2);
            do
                { 
                    n=n*2;
                    s1=s2;
                    h=(b-a)/n;
                    s2=0;
                    for (i=1; i<=n; i++)
                        s2=s2+h*f(a+i*h-h/2);
                }
        while (abs(s1-s2)>e);
        return (s2*count);
}
double Integ2(double (*f)(double), double a, double b, double e , int &n)
{
    int i;
    n=4;
    double count=1.0;
    double s1=0.0, s2=0.0, h;
        if (a==b)
        return 0;
        if (b<a)
            {
                count=a;
                a=b;
                b=count;
                count=-1.0;
            }
            h=(b-a)/4;
            for (i=1; i<=4; i++)
                s2=s2+h*f(a+(i-1)*h);
                    do
                    {
                        n=n*2;
                        s1=s2;
                        h=(b-a)/n;
                        s2=0;
                        for (i=1; i<=n; i++)
                            s2=s2+h*f(a+(i-1)*h);
                    }
            while (abs(s1-s2)>e);
        return (s2*count);
    }
        double f1(double x)
    {
        double s1;
        s1=x*sqrt(1+x);
        return s1;
    }
        double f2(double x)
    {
        double s1;
        s1=asin(sqrt(x))/(sqrt(x*(1-x)));
        return s1;
    }
        double f3(double x)
    {
        double s1;
        s1=pow(2,x)/(1+pow(4,x));
        return s1;
    }
        int main()
{
    double x1, x2, zn, eps;
    int n, t=0;
        cout<<"Vvedite otrezok integrirovaniya x1, x2 i tochnost' eps:"<<endl;
        cin>>x1>>x2>>eps;
        cout<<"'Vvedite sposob, kotorym schitat' integral 1)metod pravih pryamougol'nikov 2)metod Simpsona"<<endl;
        cin>>t;
            if (t==1)
{
    zn=Integ1(f1, x1, x2, eps, n);
    cout<<"znachenie 1oi funkcii :"<<zn<<";"<<" nomer priblicheniya :"<<n<<endl;
    zn=Integ1(f2, x1, x2, eps, n);
    cout<<"znachenie 2oi funkcii :"<<zn<<";"<<" nomer priblicheniya :"<<n<<endl;
    zn=Integ1(f3, x1, x2, eps, n);
    cout<<"znachenie 3ei funkcii :"<<zn<<";"<<" nomer priblicheniya :"<<n<<endl;
}
    else
{
    zn=Integ1(f1, x1, x2, eps, n);
    cout<<"znachenie 1oi funkcii :"<<zn<<";"<<" nomer priblicheniya :"<<n<<endl;
    zn=Integ1(f2, x1, x2, eps, n);
    cout<<"znachenie 2oi funkcii :"<<zn<<";"<<" nomer priblicheniya :"<<n<<endl;
    zn=Integ1(f3, x1, x2, eps, n);
    cout<<"znachenie 3ei funkcii :"<<zn<<";"<<" nomer priblicheniya :"<<n<<endl;
}
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2011, 20:19     Нужна помощь в исправлении
Посмотрите здесь:

С, нужна помощь C++
C++ Нужна помощь в исправлении кода одной функции...
C++ Нужна помощь.
C++ Нужна помощь
C++ Нужна помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
10.11.2011, 02:42     Нужна помощь в исправлении #2
Цитата Сообщение от Алексей_123
C++
1
    cin >> x1 >> x2 >> eps;
раздели этот ввод на два ввода

C++
1
2
    cout << "vvedite otrezok (a, b):" << endl;
    cin >> x1 >> x2;
этот код вставляешь перед каждым из вызовов Integ1(), Integ2(), Integ3()
-=ЮрА=-
Заблокирован
Автор FAQ
10.11.2011, 13:49     Нужна помощь в исправлении #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
cout<<"Vvedite otrezok integrirovaniya x1, x2 i tochnost' eps:"<<endl;
                cin>>x1>>x2>>eps;
        zn=Integ1(f1, x1, x2, eps, n);
        cout<<"znachenie 1oi funkcii :"<<zn<<";"<<" nomer priblicheniya :"<<n<<endl;
cout<<"Vvedite otrezok integrirovaniya x1, x2 i tochnost' eps:"<<endl;
                cin>>x1>>x2>>eps;
        zn=Integ1(f2, x1, x2, eps, n);
        cout<<"znachenie 2oi funkcii :"<<zn<<";"<<" nomer priblicheniya :"<<n<<endl;
cout<<"Vvedite otrezok integrirovaniya x1, x2 i tochnost' eps:"<<endl;
                cin>>x1>>x2>>eps;
        zn=Integ1(f3, x1, x2, eps, n);
        cout<<"znachenie 3ei funkcii :"<<zn<<";"<<" nomer priblicheniya :"<<n<<endl;
Добавлено через 1 минуту

Не по теме:

PS:Алексей_123, посмотрите сюда
вычислить интеграл

Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
10.11.2011, 16:57  [ТС]     Нужна помощь в исправлении #4
Спасибо большое, очень помогли
Yandex
Объявления
10.11.2011, 16:57     Нужна помощь в исправлении
Ответ Создать тему
Опции темы

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