InnaSibirova

sherbek isprav

Dec 30th, 2021 (edited)
1,303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.71 KB | None | 0 0
  1. /*
  2. Сначала задаем переменные, вводим x и eps, и проверяем корректность введённого eps (|EPS| < 1). Потом мы находим значение стандартной функции sin, и с помощью цикла while ищем значение ряда с точностью |EPS| < 1. После нахождения ряда выводим: сначала значение стандартной функции, а затем значение ряда.
  3. */
  4. #include <stdio.h>
  5. #include <math.h>
  6. /*
  7. 1. Убрана рекурсивная функция
  8. 2. Знак в 27 строке определяется иначе
  9. 3. Убрана функция pow
  10. */
  11. int main()
  12. {
  13.     float sinus1, sinus2, n = 1, eps, x, factorial = 1, power, edi = 1; // зададим переменные: sinus1 - стандартная функция sin, sinus2 - значение ряда, eps - EPS, x - вводимое значение х, factorial - значение факториала х, power - значение степени x, edi - вспомогательная переменная для определения знака
  14.     scanf("%f", &x);             // вводим х
  15.     scanf("%f", &eps);             // вводим EPS
  16.     if(fabs(eps) >= 1) {   // проверяем, корректны ли введенные данные
  17.         printf("invalid value");
  18.     }
  19.     else {
  20.         power = x;
  21.         sinus1 = sin(x);    // заносим в переменную sinus1 значение стандартной функции
  22.         sinus2 = x;                 // заносим в переменную sinus2 значение ряда, при n = 1
  23.         while(fabs(eps) < fabs(sinus2 - sinus1)) {  // выполняем цикл пока не выполнится условие |EPS| < 1
  24.             n += 2; // увеличиваем n на 2 каждый раз (т.к. как n - нечетные числа больше нуля)
  25.             factorial = factorial * n *(n-1); // высчитываем факториал х для текущей итерации
  26.             power = power * x * x;            // высчитываем степень х для текущей итерации
  27.             edi *= -1;                        // меняем знак вспомогательной переменной edi
  28.             sinus2 = sinus2 + edi * (power / factorial); // считаем значение ряда
  29.            
  30.         }
  31.         printf("standard function = %f row value = %f", sinus1, sinus2); // выводим сначала значение стандартной функции, затем значение ряда
  32.     }
  33. }
Add Comment
Please, Sign In to add comment