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

Метод трапеций - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ нужно найти ошибку. http://www.cyberforum.ru/cpp-beginners/thread542965.html
#include <stdio.h> void quickSortR(int* a, long N) { long i = 0, j = N; int temp, p; p = a;
C++ Четные\нечетные числа для последовательности Есть программа: #include <stdio.h> #include <conio.h> main(){ int i,n,a; printf("N="); scanf("%u",&n); for(i=1;i<=n;i++){ printf("\na%u=",i); http://www.cyberforum.ru/cpp-beginners/thread542961.html
Функция gcd для множества изначально неизвестных чисел. C++
Собственно вот изначальная задача: Дано натуральное число N и натуральные числа a1,a2,a3...aN. Найти наибольший общий делитель. Массивы использовать нельзя. Задачу я решил следующим образом: #include <stdio.h> #include <iostream> #include <conio.h> main(){ int i,n,x,nod; printf("N=");
C++ посчитать в строке количество непарных слов
есть строка, нужно вычислить количество слов, которые имеют непарное количество букв! начал я это реализовывать вот так: #include <stdio.h> #include <string.h> #include <conio.h> #include <math.h> void main() { char st;
C++ Нужно написать программу в с/с++, которая определяет являются ли 2 введенных с клавиатуры слова рифмой http://www.cyberforum.ru/cpp-beginners/thread542940.html
Нужно написать программу в с/с++, которая определяет являются ли 2 введенных с клавиатуры слова рифмой. Слова считаются рифмующимися, если их концовки, включающие последнюю гласную и хотя бы одну согласную, совпадают.Например крючок - червячок, земля - поля и т.д. Я что-то совсем не могу разобраться
C++ Упорядоченое добавление элементов в двусвязный список В том, на что меня хватило, сравнение и последуящая перестановка происходит только один раз с соседними элементами( Подскажите пожалуйста,как сделать так, чтобы по-человечески сортировалось\добавлялось? #include <iostream.h> #include <conio.h> void main() { clrscr(); const k=5; подробнее

Показать сообщение отдельно
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
09.04.2012, 04:20     Метод трапеций
Вот отыскал в своём архиве подобную программу. Чуть-чуть отредактировал под твои нужды, не знаю как точно она работает, писал давно на скорую руку
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
#include <iostream>
#include <cstdlib>
 
using namespace std;
const double PRECISION = 0.001; // точность вычисления
 
/* фунция вычисления площади трапеции */
inline double getTrapezoidArea( double a, double b, double h );
 
int main()
{
   double a = 0.0, b = 0.0, c = 0.0, d = 0.0, e = 0.0; // коэффициенты
   double y1 = 0.0, y2 = 0.0;
   double downLimit = 0.0, upLimit = 0.0; // пределы интегрирования
   double S = 0.0; // площадь под графиком
 
   cout << "Добро пожаловать в программу вычисления интеграла полинома 4-ой степени от a до b методом трапеции с точностью " << PRECISION << endl;
   cout << "Введите коэффициенты полинома ax^4 + bx^3 +cx^2 +dx + e" << endl;
 
   cout << "a = ";
   cin >> a;
   if ( a == 0.0 )
   {
      cout << "Ошибка. Это не полином четвертой степени. Выход" << endl;
      exit( EXIT_SUCCESS );
   }
   cout << "b = ";
   cin >> b;
   cout << "c = ";
   cin >> c;
   cout << "d = ";
   cin >> d;
   cout << "e = ";
   cin >> e;
 
   cout << "Введите пределы интегрирования( от a до b, где a <= b )" << endl;
   cout << "Введите нижний предел: ";
   cin >> downLimit;
   cout << "Введите верхний предел: ";
   cin >> upLimit;
 
   if ( downLimit > upLimit )
   {
      cout << "Ошибка. Неправильно заданы пределы интегрирования. Выход" << endl;
      exit( EXIT_SUCCESS );
   }
   else if ( downLimit == upLimit )
   {
      S = 0.0;
   }
   else
   {
      S = 0.0;
      y1 = a * downLimit*downLimit*downLimit*downLimit
           + b * downLimit*downLimit*downLimit
           + c * downLimit*downLimit + d * downLimit + e;
 
      for ( double i = downLimit + PRECISION; i <= upLimit; i += PRECISION )
      {
         y2 = a * i*i*i*i + b * i*i*i + c * i*i + d * i + e;
         if ( y1 >= 0.0 && y2 >= 0.0 )
         {
            S += getTrapezoidArea( y1, y2, PRECISION );
         }
         y1 = y2;
      }
   }
 
   cout << "Результат: " << S << endl;
   return 0;
}
 
inline double getTrapezoidArea( double a, double b, double h )
{
   return ( a + b ) * h / 2.0;
}
 
Текущее время: 16:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru