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

Кто может объяснить алгоритм прораммы.Как она работает? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка выбором (метод прямого выбора). Ошибка в задаче http://www.cyberforum.ru/cpp-beginners/thread1104350.html
Привет. У меня есть программка решение на задачку "Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в порядке убывания." В задаче два условия. Одно - сортируем...
C++ В чем разница между функциями strcat() и strcpy()? В чем разница между функциями strcat() и strcpy()? http://www.cyberforum.ru/cpp-beginners/thread1104346.html
Произведение цифр заданного трехзначного числа C++
Подскажите пожалуйста как найти произведение цифр заданного трехзначного числа?
C++ Ввод с клавы размера целочисленной матрицы, а затем самой матрицы. Найти наибольший элемент. Разрешается использовать только один оператор цикла
С клавиатуры вводится размерность целочисленной матрицы, затем сама матрица. Найти наибольший элемент. Разрешается при этом использовать только один оператор цикла (кроме цикла ввода матрицы).
C++ Сосчитать количество изменений переменной http://www.cyberforum.ru/cpp-beginners/thread1104307.html
Парни, такое дело. Есть приложение в котором имеется функция считывающая значение переменной. Нужно сосчитать количество изменений переменной(переменная bool, т.е сколько раз она принимает значение...
C++ Протабулировать функцию 2) Протабулировать функцию Y = F (x), аргумент которой пробегает множество элементов одномерного массива A, предварительно вычислив значение параметра S. S + cos (x) * cos (x), где S - сумма... подробнее

Показать сообщение отдельно
Александр1270
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 17

Кто может объяснить алгоритм прораммы.Как она работает? - C++

24.02.2014, 17:27. Просмотров 293. Ответов 2
Метки (Все метки)

Кто может объяснить алгоритм прораммы.Как она работает?по пунктам.сначала то, потом то...

/*вычислить с точностью Е площадь криволинейной трапеции ограниченной осью , Ох, прямыми х=а х=B , и кривой
y=f(x)=(1-0,25sin^2tx)^1\2 . параметр "t"- корень уравнения t^3-0,39t^2-10,5t+11=0,
принад. отрезку [c, d] и отрезку с точ. Е

исх данные:
a=0 b=П\2
с=1
d=2
E=0,001

#include <iostream>
#include <cmath>
#define _PI 3.1415926535897932384626433832795
using std::cin;
using std::cout;
using std::endl;



// уравнение трапеции(интегрируем)
// вход:
// X-координата по оси абцисс
// T-параметр является корнем уравнения f0
// выход:
// значение уравнения
float f1(float x, float t);


// уравнение (ищем корень
// вход:
// T-переменная
// выход:
// значение уравнения в точке t
float f0(float t);

// ПРЯМОУГОЛЬНИКИ (правые) - интегрирование
// вход:
// a-начало интервала интегрирования
// б-конец интервала интегрирования
// h-точность интегрирования(совпадает с шагом интегрирования
// t-параметр из решения уравнения
// выход:
// интеграл функции f1 сточностью h на интервале [a,b]
float rectangle(float a,float b,float h,float t);


// ПОЛОВИННОЕ ДЕЛЕНИЕ - поиск корня
// вход:
// a-начало интервала поиска
// б-конец интервала поиска
// h-точность поиска
// выход:
// интеграл функции f0 сточностью h на интервале [a,b]
// если корня нет то значение не попадающее в интервал поиска
float separ(float a,float b,float e);


// главная функция
// вход:
// выход:
// 0-нет ошибок
// 1-ошибка нет корня уравнения fo

int main(){
float a,b,c,d,e,tmp;
//a=0,b=_PI/2.,c=1,d=2,e=0.001;
//cout<<rectangle(a,b,e,separ(c,d,e));
cout<<"a: "; cin>>a;
cout<<"b: "; cin>>b;
cout<<"c: "; cin>>c;
cout<<"d: "; cin>>d;
cout<<"e: "; cin>>e;
if((tmp=separ(c,d,e))<c)
return 1;
cout<<rectangle(a,b,e,tmp)<<endl;
system("pause");
return 0;
}


// уравнение трапеции(интегрируем)
// вход:
// X-координата по оси абцисс
// T-параметр является корнем уравнения f0
// выход:
// значение уравнения

float f1(float x, float t){
return sqrt((1-0.25*sin(t*x)*sin(t*x)));
}


// уравнение (ищем корень)
// вход:
// T-переменная
// выход:
// значение уравнения в точке t
float f0(float t){
return t*t*t-0.39*t*t-10.5*t+11;
}


// ПРЯМОУГОЛЬНИКИ (правые) - интегрирование
// вход:
// a-начало интервала интегрирования
// б-конец интервала интегрирования
// h-точность интегрирования(совпадает с шагом интегрирования
// t-параметр из решения уравнения
// выход:
// интеграл функции f1 сточностью h на интервале [a,b]
float rectangle(float a,float b,float h,float t){
float s,x1,x2;
for(s=0,x1=a,x2=b;x1<x2;x1+=h) //площадь=0,x1=начало интервала,х2=конец,пока х1 < х2
s+=f1(x1,t); //увеличиваем х1 на величину шага и к площади прибавляем значение
//функции в точке x1
return s*h; //чтобы из суммызначений функции получить площадь умножим на величину шага
}

// ПОЛОВИННОЕ ДЕЛЕНИЕ - поиск корня
// вход:
// a-начало интервала поиска
// б-конец интервала поиска
// h-точность поиска
// выход:
// интеграл функции f0 сточностью h на интервале [a,b]
// если корня нет то значение не попадающее в интервал поиска
float separ(float a,float b,float e){
float x1=a;
float x2=b;
float x;
if(f0(a)*f0(b)>0) //функция не пересекает ось X
return a-1; //если корня нет то возвращаем значение не попадающее в интервал поиска
do{
x=(x1+x2)/2; //находим середину интервала поиска
if(f0(x1)*f0(x)>0) //если значения начала интервала и середины имеют разные знаки
x1=x; //теперь середина интервала будет являться началом интервала поиска
else //иначе корень на второй половине
x2=x; //теперь середина интервала будет являться концом интервала поиска
}while(fabs(f0(x))>e);
return x;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.