Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<math.h>
- #include<locale>
- #include <iomanip>
- using namespace std;
- double proverka1(double n)
- {
- bool flag = 0;
- for (int count = 1; flag == 0; count++)
- {
- if (count != 1)
- cin >> n;
- if (!cin)
- {
- cout << "Введенные данные должны быть числом, а не текстом! Введите еще раз: ";
- cin.clear();
- cin.ignore(10000, '\n');
- }
- else
- flag = 1;
- }
- return n;
- }
- double proverka2()
- {
- double n;
- bool exit = true;
- while (exit)
- {
- cin >> n;
- if (!cin)
- {
- cout << "Введенные данные должны быть числом, а не текстом! Введите еще раз: ";
- cin.clear();
- cin.ignore(10000, '\n');
- }
- else
- if (n == 0)
- {
- cout << "Введеное число не должно быть нулем!" << endl;
- }
- else
- exit = false;
- }
- return n;
- }
- void function(double str, double en, double st, bool& countOf)
- {
- double multy;
- double e = 2.7;
- if (countOf)
- {
- cout << "Введите еще раз параметры командной строки: ";
- cin >> str >> en >> st;
- }
- proverka1(str);
- proverka1(en);
- proverka1(st);
- if (str > en)
- {
- double tmp = str;
- str = en;
- en = tmp;
- st = fabs(st);
- }
- else
- {
- if (str < en && st < 0)
- {
- cout << "Вы хотите видеть возрастающую последовательность, но ввели шаг меньше нуля. Введите шаг больше нуля: ";
- st = proverka2();
- }
- }
- for (double x = str; x <= en; x += st)
- {
- if (x > 5 && x < 10)
- {
- multy = (pow(pow((e), (-2. + x)), 1. / 5.)*(1 / (pow(x*x + pow(x, 4), 1. / 2.) + log(fabs(x - 3.14)))));
- }
- else
- if (x >(-3) && x <= 2)
- {
- if (!(abs(x) < 0.0000000001))
- multy = pow(x, (-25.));
- }
- else
- {
- multy = pow(x, (30.));
- }
- if (abs(x) < 0.000001)
- {
- cout << "F(0) не удовлетворяет ОДЗ" << endl;
- }
- else
- cout << "F(" << x << ")=" << multy << endl;
- }
- countOf = true;
- }
- void tailor()
- {
- double x = 0, eps;
- double n;
- while (!(fabs(x)>1))
- {
- cout << "Введите x(|x|>1): ";
- cin >> x;
- x = proverka1(x);
- }
- cout << "Enter epsilon = ";
- eps = proverka2();
- double tempeps = eps;
- int neps = 0;
- for (; (((int)tempeps ==0)); neps++)
- tempeps *= 10;
- double sum = 1. / x;
- double num = 1. / x;
- for (n = 0; n<4; n++)
- {
- num *= ((2.*n + 1.) / ((2.*n + 3.)*x*x));
- sum += num;
- }
- cout << fixed;
- cout << setprecision(neps);
- cout << "Сумма первых пяти членов = " << sum << endl;
- n = 0;
- if (fabs(x) > eps)
- {
- sum = 1. / x;
- num = 1. / x;
- for (; (fabs(num*((2.*n + 1.) / ((2.*n + 3.)*x*x)))) > eps; n++)
- {
- num *= ((2.*n + 1.) / ((2.*n + 3.)*x*x));
- sum += num;
- }
- }
- else sum = 0;
- //if ((int)sum != 0)
- //neps++;
- cout << "Сумма с точностью эпсилон = " << sum << endl << "Кол-во итераций: " << n << endl;
- cout << "Стандартной функцией = " << (0.5 * log((x + 1) / (x - 1))) << endl;
- }
- int main(int argc, char *argv[])
- {
- setlocale(LC_ALL, "rus");
- int input;
- bool whileExit = true, countOf = false;
- for (int count = 1; whileExit; count++)
- {
- cout << "Выберите номер задания" << endl;
- cout << "1. Задание 1." << endl;
- cout << "2. Задание 2." << endl;
- cout << "3. Выход." << endl;
- cout << "Ваш выбор: ";
- cin >> input;
- switch (input)
- {
- case 1:
- {
- double str, en, st;
- if (argc == 1)
- {
- if (countOf == false)
- {
- cout << "Вы ничего не ввели в командной строке. ";
- cout << "Введите еще раз параметры командной строки: " << endl;
- cout << "Начало: " << endl;
- cin >> str;
- str = proverka1(str);
- cout << "Конец: " << endl;
- cin >> en;
- en = proverka1(en);
- cout << "Шаг: " << endl;
- st = proverka2();
- }
- else
- {
- str = 0;
- en = 0;
- st = 0;
- }
- }
- else
- {
- str = atof(argv[1]);
- en = atof(argv[2]);
- st = atof(argv[3]);
- }
- function(str, en, st, countOf);
- break;
- }
- case 2:
- {
- tailor();
- break;
- }
- case 3:
- {
- whileExit = false;
- break;
- }
- default: cout << "Попробуйте еще раз! Задание под таким номером не найдено!"; break;
- }
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement