Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Нахождение рядов


Автор: Syltan 4.5.2010, 17:13
Код
double main()
{
long k;
double an,s, eps;
an=-1;
s=0;
k=0;
cin>>eps;
while(fabs(an)>eps);
{
s=s+an;
an=an*(2*k+1)/(4*k-2);
k++;
}
cout<<s;
getch();
}


Этот алгоритм решает сумму вот такого ряда.

Объясните этот алгоритм решения. Меня смущает также вот эта строка:
an=-1;
и эта:
an=an*(2*k+1)/(4*k-2);

Автор: toxx 4.5.2010, 19:40
Код

double main()
{
long k;
double an,s, eps;
an=-1;
s=0;
k=0;
cin>>eps;
while(fabs(an)>eps);
{
s=s+an;
an=an*(2*k+1)/(4*k-2);
k++;
}
cout<<s;
getch();
}

А код рабочий?как минимум 3 ошибки думаю показать должен..

Автор: Syltan 4.5.2010, 19:44
Объясните пожалуйста этот код, желательно подробней.

Автор: toxx 4.5.2010, 19:45
Syltan
зачем его объяснять если он нерабочий?

Автор: Syltan 4.5.2010, 23:07
Скажите, а так правильно будет?
Код

#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
double start;
double eps;
double n;
double last;
 
cout << "enter start count: ";
cin >> start;
cout << endl << "enter epsilon: ";
cin >> eps;
 
n = 1;
 
do
{
last = start;
start = last + (2 * n - 1) / pow(2,n);
n++;
}
while (fabs(start - last) >= eps);
 
cout << endl << "result = " << start;
 
cin.get();
return 0;
}
 


Автор: toxx 4.5.2010, 23:35
инициализировать так нужно т.к. тип double
Код

n = 1.0;

start = last + (2 .0* n - 1.0) / pow(2.0,n);

кст почему тип double выбрали а не float? 

а насчет правильности вам виднее, если подставите и получиться что нужно правильно сделали, если нет, то понятно что неверно сделали =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)