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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
#1

Поправить код непростой программы - C++

20.03.2014, 17:33. Просмотров 275. Ответов 4
Метки нет (Все метки)

Здравствуйте. Написал код для вычисления интеграла методом средних прямоугольников, а он не работает. Очень прошу помочь

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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
#include <conio.h>
using namespace std;
double fun(double);  //прототип функции, которая передаёт имя функции в качестве параметра
double f1(double x)
{
    return atan(x)*x;
}
 
double f2(double x)
{
    return pow(2,x)/(1-pow(4,x));
}
 
double f3(double x)
{
    return 1/(1+sqrt(2.0*x));
}
 
double pr (double (*fun)(double),double a,double b,double eps)
{
    int n=4;
    double I=0;double I2,S,xi,h=0;
   do{
       for(n=4; ;)
     {
   h=(b-a)/n;
   xi=a+h+h/2;
   S=h*f1(xi);
   I+=S;
     }
       for(int n=n*2; ;)
   {
   h=(b-a)/n;
   xi=a+h+h/2;
   S=h*f1(xi);
   I2+=S;
   }
   } while (abs(I-I2)>=eps); 
    I=I2;
    cout<<I;
}
 
int main ()
{
    setlocale(0,"");
    cout<<pr(f1,0.0,1.6,0.00001)+pr(f2,-2.0,-1.3,0.00001)+pr(f3,0.0,1.0,0.00001)<<endl;
    system("pause");
    return 0;
}
0
Миниатюры
Поправить код непростой программы  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2014, 17:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поправить код непростой программы (C++):

Поправить код программы - C++
Здравствуйте, уважаемые программисты. Прошу у вас помощи с программой: Методические указания: 1. Ввод и вывод массива, а так же...

Поправить код программы - C++
Здравствуйте, уважаемые программисты. Очень нужна ваша помощь - не хочет работать код. Очень благодарен за любую помощь. ...

Поправить код программы - C++
Добрый день, уважаемые программисты. Нашёл нужный код для своего задания, а он не работает. Пытался его переделать,но ничего не вышло. Буду...

Разработка программы для вычисления объема геометрических фигур; вычисление результата 'непростой' формулы - C++
Доброго вам времени суток, господа. Прошу помощи в написании пары легких программок на языке СИ. Задания таковы: Составить...

Поправить код - C++
В этом коде нужно дописать, что пременная step&lt;=0 иначе errror. Как это сделать ? Вот код. #include &lt;iostream&gt; using namespace...

Необходимо поправить код - C++
в общем программа решает СЛАУ методом Жордана-Гаусса с выбором ведущего элемента, проблема в том, что код вроде бы правильный но выдает...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
20.03.2014, 18:12 #2
Цитата Сообщение от avatar1870 Посмотреть сообщение
for(n=4;
Цитата Сообщение от avatar1870 Посмотреть сообщение
for(int n=n*2;
Цитата Сообщение от avatar1870 Посмотреть сообщение
он не работает
бесконечные циклы убери. И вообще, если вдруг подобные конструкции понадобятся (не этот случай), но в качестве них for не особо смотрится, скажу я тебе.

Вот так должен (примерно) выглядеть один участок (у тебя их 2, сам исправишь)
C++
1
2
3
4
5
   h=(b-a)/n;
  for(int i=0; i<n; ++i) {
     xi=a+h+h/2;
     I+=h*f1(xi);
  }
Раз на то пошло, еще скажу: второй (для I2) такой же, только цикл до n*n, а h уже определено.
Кликните здесь для просмотра всего текста
А вообще обычно указывают не точность, а количество разбиений, ну да ладно.
0
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
20.03.2014, 18:18  [ТС] #3
Поправил, а насчёт остального не совсем догнал(((

И нам нужно сделать именно с точностью

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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
#include <conio.h>
using namespace std;
double fun(double);  //прототип функции, которая передаёт имя функции в качестве параметра
double f1(double x)
{
    return atan(x)*x;
}
 
double f2(double x)
{
    return pow(2,x)/(1-pow(4,x));
}
 
double f3(double x)
{
    return 1/(1+sqrt(2.0*x));
}
 
double pr (double (*fun)(double),double a,double b,double eps)
{
    int n=4;
    double I=0;double I2,S,xi,h=0;
   do{
       for(n=4; ;)
     {
   h=(b-a)/n;
  for(int i=0; i<n; ++i) {
     xi=a+h+h/2;
     I+=h*f1(xi);
  }
     }
       for(int n=n*2; ;)
   {
    h=(b-a)/n;
  for(int i=0; i<n; ++i) {
     xi=a+h+h/2;
     I+=h*f1(xi);
  }
   }
   } while (abs(I-I2)>=eps); 
    I=I2;
    cout<<I;
}
 
int main ()
{
    setlocale(0,"");
    cout<<pr(f1,0.0,1.6,0.00001)+pr(f2,-2.0,-1.3,0.00001)+pr(f3,0.0,1.0,0.00001)<<endl;
    system("pause");
    return 0;
}
0
vlad3996
6 / 6 / 3
Регистрация: 27.10.2013
Сообщений: 14
20.03.2014, 18:53 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <iomanip>
#include <math.h>
#include <iomanip>
using namespace std;
double fun(double);     
double f1(double x)
{
    return atan(x)*x;
}
 
double f2(double x)
{
    return pow(2,x)/(1-pow(4,x));
}
 double f3(double x)
{
    return 1/(1+sqrt(2.0*x));
}
double sr_pr (double (*fun)(double),double a,double b,double eps)
{
    double c,f1,f2=0.0,d,s;
    long n=4;
    d=(b-a)/n;
    c=a;
    for(int i=1;i<=n;i++)
        f2=f2+fun(c+d*i-d*0.5);
    f2*=d;
    do
    {
        c=a;
        f1=f2;
        f2=0;
        n*=2;
        d=(b-a)/n;
        for(int i=1;i<=n;i++)
            f2=f2+fun(c+d*i-d*0.5);
        f2=f2*d;
    }
    while(fabs(f2-f1)>eps);
    return f2;
}
int main ()
{
    setlocale(LC_CTYPE,"rus");
    double eps;
    cout<<"Введите eps "<<endl;
    cin>>eps;
    cout<<sr_pr(f1,0.0,1.6,eps)+sr_pr(f2,-2.0,-1.3,eps)+sr_pr(f3,0.0,1.0,eps)<<endl;
    system("pause");
    return 0;
}
1
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
21.03.2014, 16:13 #5
Цитата Сообщение от avatar1870 Посмотреть сообщение
Поправил
Я бы так не сказал. Ты просто вставил мой код в свой проект, ничего у себя не удалив. Думать надо хоть немного, епт...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2014, 16:13
Привет! Вот еще темы с ответами:

Нужно поправить код - C++
Вобщем есть файл txt с парами областей вот пример кусочек Volynska Rivnenska Volynska Lvivska Lvivska Volynska Lvivska...

Поправить немного код - C++
#include &lt;string.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; using namespace std; int main() { int...

Поправить код для вращения - C++
Всем доброго времени суток! Есть прога, которая при запуске крутит куб вокруг оси x, вотом при нажатии произвольной клавиши начинает его...

Сортировка в лексографическом порядке(только чуть поправить код) - C++
Есть структура &quot;книга&quot; struct Book { char name; char autor; int year; int number_of_copy; Book* link; }...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.03.2014, 16:13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru