Написать на языке C++ программу, вычисляющую функцию, представленную в виде ряда с заданной точностью - C (СИ)
Формулировка задачи:
Ребят помогите пожалуйста. Написать на языке СИ++
Составить программу вычисления функции, представленной бесконечным ря-
дом, с точностью до четырех знаков после запятой. Программу оформить в
виде функции языка С.
Составить программу, которая рассчитывает таблицу значений этой функции в
указанном диапазоне значений x0 — xk с заданным шагом h. Величины x0, xk, h
вводить с клавиатуры
Вот примерный фундамент, но эта программа не идет у меня на компьютере и поменять просто значения не получается... Помогите пожалуйста
#pragma warning(disable:4996) // отключение данного предупреждения позволяет использовать функцию fopen
#include <stdio.h>
int main()
{
float S, a, eps, x0, xk, h; // обЪявление переменных
short int n;
n = 0; //здесь будет счетчик. Номер члена ряда.
S = 0; // здесь будет считаться сумма бесконечно ряда.
eps = 0.0001; //точность
a = 1; // переменная для подсчета членов ряда по рекуррентному соотношению
scanf_s("%f",&x0); // начальная точка
scanf_s("%f",&xk); // конечная точка
scanf_s("%f",&h); // шаг (инкремент)
FILE *stream; // дескриптор файла
stream = fopen("result.txt", "a+"); // создание файла, в который буду записываться рез-ты работы программы.
do // Этот цикл с постусловием нужен для получения множества значений функции, соответсвующих данным аргументам.
{ // Он будет выполняться, пока х0 не станет равно хk.
do // Цикл внутри нужен для вычисления сумма слагаемых бесконечного ряда при данном х0
{ S = S + a; // сумма слагаемых
n= n+1; // счетчик номера члена ряда
a=(a*2*n*x0*x0) / ((2*n + 1)*(1 + x0*x0)); // вычисление следующего члена ряда по рекуррентной формуле,
} while (a >= eps); // пока он не станет меньше требуемой точности.
S = (S*x0) / (x0*x0 + 1); // значение самой функции в этой точке: (сумма бесконечного ряда)*(член перед ним)
printf_s("%f ", x0); // вывод аргумента функции на консоль
printf_s("%f \n", S); // вывод значения функции на консоль
if (stream != NULL) // обеспечение записи аргумента и значения функции в файл
{
fprintf(stream, "%f ", x0); // аргумент
fprintf(stream, "%f \n", S); // значение функции
}
S = 0;
n = 0; // подготовка к новому прохождению цикла с измененным x0. S можно обнулять, так как эта переменная уже выведена
a = 1;
x0=x0+h; // добавление к х0 указанного шага.
} while (x0<= xk); // проверка условия на выход цикла.
scanf_s("%f", &xk); // запрос на ввод символа, чтобы сразу после выполнения команды консоль не закрывалась.
return 0;
}Решение задачи: «Написать на языке C++ программу, вычисляющую функцию, представленную в виде ряда с заданной точностью»
textual
Листинг программы
if ((fd = fopen("data.txt", "a+")) == NULL) { printf("Holly-molly\n"); exit(0);} do{} while()
Объяснение кода листинга программы
- Открывается файл
data.txtв режиме добавленияa+с помощью функции fopen. - Проверяется успешность открытия файла, если файл не открылся, выводится сообщение об ошибке и программа завершается.
- Запускается бесконечный цикл do-while, который будет выполняться до тех пор, пока не произойдет переход в следующую итерацию с помощью оператора break.