Вычислить сумму бесконечного ряда с заданной точностью - C (СИ)
Формулировка задачи:
Вычислить сумму бесконечного ряда:
S=1/2-1/4+1/8-1/16
вот такой вот ряд.....
В этом коде работает только 1 пункт, где подсчитывает сумму ряда с заданным кол-ом членов.
А вот с точностью проблемы....сам код какой то странный....я писал писал...и ничего не выходит((((
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "locale.h"
void main()
{setlocale(LC_ALL,"Rus");
float n,s=0,m,t,temp=0,T,i=2;
int q;
printf("Вычисление бесконечного ряда:\n[1] Для указанного количества членов ряда\n[2] С заданной точностью\n");
scanf("%i",&q);
if(q==1)
{
printf("Введите количество членов ряда: ");
scanf("%f",&m);
for(n=0;n<m;n++)
{
s=s+(1/(i));
i=(i+2)*(-1);
}
printf("Сумма равна: %f\n",s);
}
else if(q==2)
{
printf("Введите точность: ");
scanf("%f",&t);
do
{
temp=s;
s=s+(1/(i));
T=abs(temp-s);
printf("сумма: %f \n",s);
i+=2*(-1);
}
while(T>t);
}
getch();
}
Вот эту часть надо сделать.....вот не считает правильно и всё((((
короче, тут введя любую точность он всё время выводит одну и тужу сумму=)
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "locale.h"
void main()
{setlocale(LC_ALL,"Rus");
float n,s=0,m,t,temp=0,T,i=2;
printf("Введите точность: ");
scanf("%f",&t);
do
{
temp=s;
s=s+(1/(i));
T=abs(temp-s);
printf("сумма: %f \n",s);
i+=2*(-1);
}
while(T>t);
getch();
}Решение задачи: «Вычислить сумму бесконечного ряда с заданной точностью»
textual
Листинг программы
double s = 0;
double t = 0.5; /*текущее слагаемое*/
double eps;
printf( "eps = ? " );
scanf( "%f", &eps );
while( fabs(t) > eps )
{
s += t;
t *= -0.5;
}
printf( "\nsum = %f\n", s ); /*точное значение - сумма геометрической прогрессии, школьная формула, вычислить и сравнить*/
Объяснение кода листинга программы
- Объявляются переменные: s (сумма), t (текущее слагаемое), eps (точность).
- Пользователю предлагается ввести значение точности с помощью функции scanf.
- В цикле while с помощью функции fabs проверяется, больше ли абсолютное значение текущего слагаемого заданной точности.
- Если условие выполняется, то текущее слагаемое прибавляется к сумме, а затем переменная t умножается на -0.5.
- После выхода из цикла, с помощью функции printf выводится точное значение суммы геометрической прогрессии.