Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- В данной программе сначала пользователь вводит значение EPS и значение x. После проверки EPS на корректность начинаем считать
- значение ряда с точностью до EPS (для этого в цикле while вкладываем цикл for, который высчитывает факториал при n (до 2n - 1),
- каждый раз меняя ряд при определенном n. После завершения цикла выводим значение стандартной функции sin, и значение найденного
- ряда.
- */
- /* Исправления:
- 1) Корректность данных (а точнее EPS) проверяется, в случае некорректности выводится соответствующее сообщение.
- 2) Переделан цикл while: теперь нет функции pow, а факториал и степень вычисляются по-другому (накапливаются с каждой итерацией
- в отдельной переменной)
- */
- #include <stdio.h> // подключаем библиотеки ввода и вывода и библиотеку математических функций
- #include <math.h>
- int main()
- {
- float e, s, row, x, step = 1; // задаем переменные типа float: e - EPS, s - sin, row - значение ряда, x - введённое значение x, step - степень x (при отдельной итерации)
- int fact = 1, n = 1; //fact - переменная для хранение значения факториала
- printf("enter EPS \n"); // просим пользователя ввести EPS
- scanf("%f", &e); // вводим значение EPS
- printf("enter x \n"); // просим пользователя ввести x
- scanf("%f", &x); // вводим значение x
- if(fabs(e) >= 1) { // проверяем корректность EPS
- printf("uncorrect data");
- }
- else {
- s = sin(x); // заносим в s значение стандартной функции sin
- row = x; // заносим в row значение ряда, при n = 1
- step = x;
- while(fabs(s - row) > fabs(e)) { // высчитываем значение ряда до нужного EPS
- n += 2; // увеличиваем n на два
- fact = fact * n * (n-1); // вычисляем факториал для текущей итерации
- step = step * x * x; // вычисляем степень для x для текущей итерации
- if(n % 4 == 3) { // c переменным знаком прибавляем/вычитаем к/из ряда текущее значение степени x деленное на факториал
- row = row - (step / fact);
- }
- else {
- row = row + (step / fact);
- }
- }
- printf("sin = %f row = %f", s, row); // после нахождения ряда, с точностью до EPS, выводим значение стандартной функции и значение ряда
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement