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

Маленькая доработка программы - C++

Восстановить пароль Регистрация
 
artem1889
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 7
28.11.2013, 22:24     Маленькая доработка программы #1
Требуется написать программу для вычисления интеграла методом левых, правых и средних прямоугольников. Вот есть программа как вычислить 1 интеграл.

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int a,b,n,i;
float h,x,s;
int main()
{
printf("Vvedite interval [a;b]\n");
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
printf("Vvedite kolvo tochek \n");
scanf("%d",&n);
h=(float) (b-a)/n;
printf("h=%f",h);

x=a;
s=0;
for(i=0;i<=(n-1);i++)
{
s+=(x*x)+(5*x);
x=x+h;
}
printf("\nReshenie naideno metodom levih prjamougolnikov");
printf("\ns=%.2f \n",s);

x=a+h/2;
s=0;
for(i=0;i<=n;i++)
{
s+=(x*x)+(5*x);
x=x+h;
}
printf("\nReshenie naideno metodom srednih prjamougolnikov");
printf("\ns=%.2f \n",s);
x=a+h;
s=0;
for(i=0;i<=n;i++)
{
s+=(x*x)+(5*x);
x=x+h;
}
printf("\nReshenie naideno metodom pravih prjamougolnikov");
printf("\ns=%.2f \n",s);

system("PAUSE");
return 0;
}

Подскажите как сделать так, чтоб считало интегралы введенные пользователем. Поскольку я пытаюсь вписать через сhar выдает ошибку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2013, 22:24     Маленькая доработка программы
Посмотрите здесь:

C++ Требуется доработка программы.
C++ Доработка программы
Осуществить поиск в строке первого вхождения указанного символа (Маленькая доработка) C++
C++ Осуществить конкатенацию двух файлов за счёт создания третьего файла (Маленькая доработка)
C++ маленькая маленькая консультация, не сложная работа
Доработка программы: вставка switch C++
Доработка программы с++ C++
Доработка программы с++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nullpointer
 Аватар для nullpointer
45 / 45 / 5
Регистрация: 30.03.2009
Сообщений: 518
28.11.2013, 23:20     Маленькая доработка программы #2
Давно писал нахождение интегралов разными способами. В программе присутствую методы левых (правых не писал потому что поменять пару знаков только надо), центральных прямоугольников, метод Симпсона, трапеций.
Функция правда задается в самой программе, а не вводится пользователем.
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// kvadr_formuly.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
#define pogr 2
 
using namespace std;
 
float function(float x){
    return sin(x);
}
 
float left_pr(float left_gr, float right_gr, int n){
    float delta_x = 0.0;    
    float left_integral = 0.0;
    float ksi = 0.0;
    
    delta_x = (right_gr - left_gr) / n;
    ksi = left_gr;
 
    for (int k = 1; k <= n; ++k){
        left_integral += function(ksi) * delta_x;
        ksi += delta_x;
    }
 
    return left_integral;
}
 
float center_pr(float left_gr, float right_gr, int n){
    float delta_x = 0.0;    
    float center_integral = 0.0;
    float ksi = 0.0;
        
    delta_x = (right_gr - left_gr) / n;
    ksi = left_gr + 0.5 * delta_x;
    for (int k = 1; k <= n; ++k){
        
        center_integral += function(ksi) * delta_x;
        ksi += delta_x;
    }
 
    return center_integral;
}
 
float trapecii(float left_gr, float right_gr, int n){
    float ksi = 0.0;
    float delta_x = 0.0;
 
    float trapecii_integral = (function(left_gr) + function(right_gr)) / 2.0;   
    ksi = left_gr;
    delta_x = (right_gr - left_gr) / n;
 
    for (int k = 1; k < n; ++k){
        ksi += delta_x;
        trapecii_integral += function(ksi);
    }
 
 
    return trapecii_integral * delta_x;
}
 
float simpson(float left_gr, float right_gr, int n){
    float ksi = 0.0;
    float delta_x = 0.0;
    float simpson_integral = 0.0;
    int m = 2 * n;
 
    delta_x = (right_gr - left_gr) / m;
    simpson_integral = function(left_gr) + function(right_gr);
    ksi = left_gr;
 
    for (int i = 1; i < m; ++i){
        ksi += delta_x;
        if ((i % 2) == 0){
            simpson_integral += 2 * function(ksi);
        }
        else{
            simpson_integral += 4 * function(ksi);
        }
    }
 
    return simpson_integral * delta_x / 3;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "Russian");
    int n;
    float left_gr, right_gr;
    float left_int, center_int;
    float trapecii_int;
    float simpson_int;
    float pogr_l = 0.0, pogr_c = 0.0, pogr_t = 0.0, pogr_s = 0.0;
 
    cout << "Введите число интервалов: ";
    cin >> n;
    cout << endl;
 
    cout << "Введите границы: ";
    cin >> left_gr >> right_gr;
    cout << endl;
    
    left_int = left_pr(left_gr, right_gr, n);
    center_int = center_pr(left_gr, right_gr, n);
    trapecii_int = trapecii(left_gr, right_gr, n);
    simpson_int = simpson(left_gr, right_gr, n);
    pogr_l = abs(left_int - pogr);
    pogr_c = abs(center_int - pogr);
    pogr_t = abs(trapecii_int - pogr);
    pogr_s = abs(simpson_int - pogr);
 
    printf("Левые прямоугольники: %2.5f", left_int);
    printf("\nПогрешность левые прямоугольники: %2.5f", pogr_l);
    printf("\n\nЦентральные прямоугольники: %2.5f", center_int);
    printf("\nПогрешность центральные прямоугольники: %2.5f", pogr_c);
    printf("\n\nТрапеции: %2.5f", trapecii_int);
    printf("\nПорешность трапеции: %2.5f", pogr_t);
    printf("\n\nСимпсон: %2.5f", simpson_int);  
    printf("\nПогрешность Cимпсон: %2.5f", pogr_s);
    cout << endl << endl;
 
    system("pause");
    return 0;
}
Yandex
Объявления
28.11.2013, 23:20     Маленькая доработка программы
Ответ Создать тему
Опции темы

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