• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Си. Функции. Помогите написать код

  • Автор темы Samyrro
  • Дата начала
S

Samyrro

Написать функцию вычисления суммы ряда y=sinx-(sin2x)/2+…+((-1)^n+1)*sin(nx)/n с точностью до eps=0.001. В качестве параметров передать x (в радианах) и eps.
[doublepost=1509062568,1509048419][/doublepost]Вот, думаю всё верно, на калькуляторе сверил результаты многократно - всё верно
Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define PI 3.14159265
int main()
{
double x = 0, eps = 0, result = 0, my_funct(double, double);
printf("X ( grad ) = ");
scanf ("%lf", &x);
x = x * (PI / 180.0); // Переводим градусы в радианы
printf("eps = ");
scanf ("%lf", &eps);
result = my_funct(x, eps);
/*Вычисление суммы ряда с определенной точностью ε означает,
 что сумма ряда вычисляется до тех пор, пока модуль разности
 между текущим и предыдущим членом последовательности больше eps.
 */
printf("\nSumma = %lf", result);
getch();
}
double my_funct(double x, double eps)
{
double current = 0, previous = 0, sum = 0;
int n = 1;
current = pow(-1, n+1) * (sin(n*x))/n;
do
    {
        n++;
        previous = current;
        current = pow(-1, n+1) * (sin(n*x))/n;
        sum += current;
    } while (fabs(current - previous) > eps);

return sum;
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!