Сумма бесконечного ряда - C (СИ) (79217)
Формулировка задачи:
Господа профессионалы помогите пожалуйста, я вроде как сделал задачку на СИ но не уверен в правильно ли он считает... Вот само задание и моя программка:
Вычисления с заданной точностью
Найти сумму ряда с заданной точностью. Точность и значение переменной х вводить с клавиатуры. Осуществить проверку ошибок ввода. Считать ошибочными значения х, которые приводят к расхождению ряда.
#include <conio.h> #include <stdio.h> #include <math.h> void main(){ clrscr(); printf("Введите точность и значение числа 'x': "); float eps,x; scanf("%f%f",&eps,&x); int n=1; float S=0,q=1; do{ q=x/(sqrt(fabs(x))+(n*n)); S+=q; n++; } while(q>=eps); printf("Сумма ряда = %f количество итераций = %d",S,n-1); getch(); }
Решение задачи: «Сумма бесконечного ряда»
textual
Листинг программы
int temp = x/(sqrt(fabs(x))+(n*n)); q=temp; while(q>=eps){ q=x/(sqrt(fabs(x))+(n*n)); if(q>temp) { printf("Raid rozhodytsia, x vvedeno neverno");return 0; } temp=q; S+=q; n++; }
Объяснение кода листинга программы
- Сначала мы объявляем переменную
temp
и присваиваем ей значениеx/(sqrt(fabs(x))+(n*n))
. Это формула для нахождения члена ряда, который мы добавляем к переменнойS
. - Затем мы присваиваем переменной
q
значениеtemp
, чтобы использовать его в цикле. - Мы входим в цикл while, который продолжается, пока
q
больше или равноeps
(предположительно, очень маленькое число). - Внутри цикла мы снова вычисляем
q
с помощью формулыx/(sqrt(fabs(x))+(n*n))
. - Если новое значение
q
больше, чем текущее значениеtemp
, мы выводим сообщение об ошибкеRaid rozhodytsia, x vvedeno neverno
и возвращаем 0. - Если новое значение
q
меньше или равноtemp
, мы обновляемtemp
этим новым значением. - Мы добавляем новое значение
q
к переменнойS
. - Мы увеличиваем значение
n
на 1. - Цикл продолжается, пока
q
больше или равноeps
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д