Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //#include "stdafx.h" // Если запускаем программу в Visual Studio, убираем первые "//" перед #
- #include <iostream>
- #include "cmath"
- #include <conio.h> // Для функции getch()
- using namespace std;
- int main(){
- setlocale(LC_ALL, "rus_rus.1251");
- cout << "Введите номер нужного пункта. (Любая другая клавиша - выход)" << endl << endl;
- cout << "\t1. Вычисление значений функции для некоторого промежутка значений X" << endl;
- cout << "\t2. Вычисления определенного интеграла методом прямоугольника" << endl;
- //getch() сразу принимает символ от пользователя и отправляет его в switch
- switch(getch()){
- //Пункт, в котором происходит вычисление значений функции для некоторого промежутка значений X
- case '1':{
- cout << endl;
- long double x1, x2, n, func; // x1, x2 - границы, n - шаг, func - значение функции
- cout << endl << "Введите начало промежутка и конец промежутка значений X" << endl;
- cin >> x1;
- cin >> x2;
- cout << endl << "Введите точность перебора значений X" << endl;
- cin >> n;
- //Если вдруг начало промежутка больше конца, то их значения будут поменяны местами
- if (x2 < x1){
- int bufer = x1;
- x1 = x2;
- x2 = bufer;
- }
- //Проверка n>0 для того, что бы исключить существование нулевого шага
- if (n > 0){
- for (long double x = x1; x <= x2; x += n){
- func = (5+2*cos(2*x))/(sqrt(11)-sin(x+1));
- cout << "Значение функции при X = " << x << " равно " << func << endl << endl;
- }
- }
- else{
- cout << "Точность перебора не может быть равна нулю..." << endl;
- exit(1);
- }
- }
- break;
- //Пункт, в котором происходит вычисление определенного интеграла методом прямоугольника
- case '2':{
- cout << endl;
- cout << "Введите границы a и b для нахождения интеграла функции" << endl;
- // a, b - границы, n - шаг, fx - значение функции, integr - сумма значений функции, endResult - требуемый результат
- long double a, b, n, fx, integr = 0, endResult;
- cin >> a;
- cin >> b;
- cout << "Введите точность расчета n\n";
- cin >> n;
- //Если вдруг начало промежутка больше конца, то их значения будут поменяны местами
- if (b < a){
- int bufer = b;
- b = a;
- a = bufer;
- }
- //Проверка n>0 для того, что бы исключить существование нулевого шага
- if (n > 0){
- for (long double x = a; x <= b; x += n){
- fx = (5+2*cos(2*x))/(sqrt(11)-sin(x+1));
- integr += fx;
- }
- endResult = ((b-a)/n)*integr;
- cout <<"Интеграл функции = " << endResult << endl;
- }
- else{
- cout << "Точность расчета не может быть равна нулю..." << endl;
- exit(1);
- }
- }
- break;
- //При любой клавише, кроме '1' и '2', выполняется это
- default:{
- cout << endl;
- cout << "Выход..." << endl;
- }
- break;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment