Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _USE_MATH_DEFINES
- #define IDI_ICON1
- #include <stdio.h>
- #include <conio.h> // getch
- #include <math.h> // fabs, pow, ceil\floor, log, log10, exp, sqrt
- #include <cstdlib> // rand
- #include <windows.h> // SetConsoleOutputCP(1251); SetConsoleCP(1251);
- #include <iostream>
- #include <ctime>
- const double xx[7] = { 0.00001, -0.99, -1, -0.1, 0.1, 1, 0.99 };
- using namespace std;
- int main()
- {
- SetConsoleTitleW(L"Лабораторная работа №5 Карелин Влад A-04-18");
- SetConsoleOutputCP(1251);
- srand(time(NULL));
- printf_s("Введите e=");
- double e;
- scanf_s("%lf", &e);
- while (!(e > 0 && e <= 0.1))
- {
- printf_s("Некорректный ввод, e должно быть в (0..0.1], введите еще раз - ");
- scanf_s("%lf", &e);
- }
- fflush(stdin); // очищаем буфер (лишние символы после ввода e)
- printf_s("Введите n=");
- int n;
- scanf_s("%d", &n);
- while (!(n >= 1 && n <= 20))
- {
- printf_s("Некорректный ввод, n должно быть в [1..20], введите еще раз - ");
- scanf_s("%d", &n);
- }
- fflush(stdin);
- double *x;
- x = new double[n]; // выделяем память для n элементов массива
- printf_s("Введите n=%d значений X из интервала (-1,+1):\n", n);
- for (int i = 0; i < n; i++)
- {
- scanf_s("%lf", &x[i]);
- if (fabs(x[i]) >= 1)
- {
- x[i] = xx[rand() % 8]; // одно из семи значений массива xx
- if (fabs(x[i]) == 1)
- {
- x[i] = x[i] * (rand() % 100) / 100;
- if (x[i] == 0) x[i] = e; // для некоторых вариантов x=/=0
- }
- printf_s("Некорректное значение заменено на %15.10lf\n", x[i]);
- }
- }
- int z;
- z = ceil(fabs(log(e) / log(10.0))) + 1;
- printf_s("\n\ne = %*.*lf\n", z + 2, z, e); // вывод e:(z+2):z
- printf_s(" N | X | Sum(X) | K | F(X) | Sum(X)-F(X)\n");
- for (int i = 0; i < n; i++)
- {
- double sl, sum;
- sum = sl = x[i] * (4 - x[i]) / 24;
- int k = 1;
- while ((fabs(sl) >= e) && (k != 500))
- {
- sl *= (pow(x[i], 4) *(4 * k + 4 - x[i])) / ((4 * k - x[i]) * (4 * k + 1)*(4 * k + 2)*(4 * k + 3)*(4 * k + 4));
- sum += sl;
- k++;
- };
- double f;
- f = (2 - sin(x[i]) - cos(x[i]) - pow(M_E, -x[i])) / (2 * pow(x[i], 2));
- printf_s("%3d|%17.*lf|%17.*lf|%2d|%17.*lf|%17.*lf\n", i + 1, z, x[i], z, sum, k, z, f, z + 2, fabs(sum - f));
- }
- delete[] x; // освобождение памяти для одномерного дин.массива
- cout << "\nНажмите любую клавишу для выхода";
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement