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

Вычисление определенного интеграла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка "Необъявленный идентификатор" при создании конструктора в наследственном классе http://www.cyberforum.ru/cpp-beginners/thread1120956.html
Выдает ошибку Необъявленный идентификатор a b,когда создаю конструктор в наследственном классе #include "stdafx.h" #include <iostream> using namespace std; class para_chysel { private: int x;
C++ Private данные. Как приравнять переменную к нулю Подскажите как прировнять переменную Quant нулю? class Text { public: Text() { } void AddText(); void Quantity(); http://www.cyberforum.ru/cpp-beginners/thread1120954.html
C++ Алгоритм сортировки слиянием. Исправить ошибки в коде
#include <iostream> #include <time.h> void merge(int array, int left, int right, int n) { int middle, start1, start2, j; int *tempArray = new int; middle = (left + right)/2;
Массивы. Ввести n элементов одномерного массива, вычислить указанное выражение, вывести на экран C++
Составить программу на языке С++ для обработки одномерных массивов с использованием указателей: 1. .Ввести n элементов одномерного массива; 2. Вычислить указанное выражение; 3 Вывести на экран значение указанного выражения. Помогите, другие программы по с++ сделал, осталась только с факториалом
C++ Определить существенные и фиктивные переменные. Вывести на экран таблицу истинности для существенных переменных http://www.cyberforum.ru/cpp-beginners/thread1120911.html
Для функции трёх переменных определить существенные и фиктивные переменные. Вывести на экран таблицу истинности для существенных переменных. Вот мой код, но где-то закралась ошибка, так как таблицы выводятся не для всех функций, которые я ввожу, к примеру: 10111011, оно скажет, что переменные y, z - существенные, но таблицу не выдаст. #include <iostream> #include <math.h> using namespace...
C++ Обработка сведений о студентках Помогите исправить программу. Вроде нет ошибок но он неправильно выводит. Вот условие задачи: Составьте программу для обработки сведений о студентках своей группы. Сведения представляются в виде таблицы, содержащей фамилии студентов и определить характеристики: Характеристики: ФИО, дата рождения Обработка: Выбор родившихся в заданное год #include <conio.h> #include <iostream> подробнее

Показать сообщение отдельно
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
17.03.2014, 17:35  [ТС]     Вычисление определенного интеграла
Написал другую программу, но в задании сказано использовать передачу функций в качестве параметра функции. Как это сделать не знаю(

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
#include <iostream>
#include <math.h>
#include <locale.h>
using namespace std;
const float p = 3.141592653;
#include<stdio.h>
#include<stdlib.h>
 
/*----pidintegralna functsia---*/
double INTEGR0(double x)
{
    return x*atan(x);
}
 
double INTEGR1(double x)
{
    return pow(2,x)/(1-pow(4,x));
}
 
double INTEGR2(double x)
{
    return 1/(1+sqrt(2*x));
}
 
/*----integruvannia metodom trapezii---*/
double trapez0(double left, double right, double h)
{
    double sum = 0;
    double runner;
     /* formula trapezii*/
    for(runner = left + h; runner < right; runner += h)
        sum += INTEGR0(runner);
    sum = (sum + 0.5*(INTEGR0(left) + INTEGR0(right))) * h;
    return sum;
}
 
 double trapez1(double left, double right, double h)
 {  
      double sum = 0;
    double runner;
     for(runner = left + h; runner < right; runner += h)
        sum += INTEGR1(runner);
    sum = (sum + 0.5*(INTEGR1(left) + INTEGR1(right))) * h;
    return sum;
 }
 
 double trapez2(double left, double right, double h)
 {
      double sum = 0;
    double runner;
     for(runner = left + h; runner < right; runner += h)
        sum += INTEGR2(runner);
    sum = (sum + 0.5*(INTEGR2(left) + INTEGR2(right))) * h; 
    return sum;
 }
 
int main(int argc, char ** argv)
{
    char c;
    double a=0;
        double b=1.6;
        double s=-2;
        double d=1.3;
        double e=0;
        double f=1;
        double h;
    printf("Enter integration step : ");
    scanf_s("%lf",&h);
     double trap = trapez0(a, b, h)+trapez0(s, d, h)+trapez0(e, f, h);
     printf("vidpovid za metodom trapezii  %10.10f.\n", trap);
    scanf_s("%c",&c);scanf_s("%c",&c);
    return 0;
}
Добавлено через 31 минуту
Пытался что-то сделать, но мало что получилось

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
// lab_15.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
 
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <cmath>
#include <stdio.h> 
#include <conio.h>
#include <iostream>
#include <iomanip>
using namespace std;
 
 
/*----pidintegralna functsia---*/
double INTEGR0(double x)
{
    return x*atan(x);
}
 
double INTEGR1(double x)
{
    return pow(2,x)/(1-pow(4,x));
}
 
double INTEGR2(double x)
{
    return 1/(1+sqrt(2*x));
}
 
/*----integruvannia metodom trapezii---*/
double trapez0 (double h, double (*INTEGR0)(double),double (*INTEGR1)(double),double (*INTEGR2)(double))
{
        double a=0;
        double b=1.6;
        double s=-2;
        double d=1.3;
        double e=0;
        double f=1;
          double sum0 = 0;
          double sum1 = 0;
          double sum2 = 0;
    double runner=0;
      for(runner = a + h; runner < b; runner += h)
        sum0 += INTEGR0(runner);
    sum0 = (sum0 + 0.5*(INTEGR0(a) + INTEGR0(b))) * h;
        
     for(runner = s + h; runner < d; runner += h)
        sum1 += INTEGR1(runner);
    sum1 = (sum1 + 0.5*(INTEGR1(s) + INTEGR1(d))) * h;
     
     for(runner = e + h; runner < f; runner += h)
        sum2 += INTEGR2(runner);
    sum2 = (sum2 + 0.5*(INTEGR2(e) + INTEGR2(f))) * h; 
    return sum0+sum1+sum2;
 }
 
int main()
{
    double h;
    char c;
    printf("Enter integration step : ");
    scanf_s("%lf",&h);
     double trap = trapez0 (h,(*INTEGR0)(double),(*INTEGR1)(double),double (*INTEGR2)(double);
     printf("vidpovid za metodom trapezii  %10.10f.\n", trap);
    scanf_s("%c",&c);scanf_s("%c",&c);
    return 0;
}
Добавлено через 2 часа 12 минут
Что-то неправильно в вызове функции

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
// lab_15.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
 
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <cmath>
#include <stdio.h> 
#include <conio.h>
#include <iostream>
#include <iomanip>
using namespace std;
 
/*Прототипы*/
double INTEGR0(double x);
double INTEGR1(double x);
double INTEGR2(double x);
double trapez0 (double h, double (*INTEGR0)(double),double (*INTEGR1)(double),double (*INTEGR2)(double));
 
/*----pidintegralna functsia---*/
double INTEGR0(double x)
{
    return x*atan(x);
}
 
double INTEGR1(double x)
{
    return pow(2,x)/(1-pow(4,x));
}
 
double INTEGR2(double x)
{
    return 1/(1+sqrt(2*x));
}
 
/*----integruvannia metodom trapezii---*/
double trapez0 (double h, double (*INTEGR0)(double),double (*INTEGR1)(double),double (*INTEGR2)(double))
{
        double a=0;
        double b=1.6;
        double s=-2;
        double d=1.3;
        double e=0;
        double f=1;
          double sum0 = 0;
          double sum1 = 0;
          double sum2 = 0;
    double runner=0;
      for(runner = a + h; runner < b; runner += h)
        sum0 += INTEGR0(runner);
    sum0 = (sum0 + 0.5*(INTEGR0(a) + INTEGR0(b))) * h;
        
     for(runner = s + h; runner < d; runner += h)
        sum1 += INTEGR1(runner);
    sum1 = (sum1 + 0.5*(INTEGR1(s) + INTEGR1(d))) * h;
     
     for(runner = e + h; runner < f; runner += h)
        sum2 += INTEGR2(runner);
    sum2 = (sum2 + 0.5*(INTEGR2(e) + INTEGR2(f))) * h; 
    return sum0+sum1+sum2;
 }
 
int main()
{
    double h;
    char c;
    printf("Enter integration step : ");
    scanf_s("%lf",&h);
     double trap = trapez0(h);
     printf("vidpovid za metodom trapezii  %10.10f.\n", trap);
    scanf_s("%c",&c);scanf_s("%c",&c);
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru