#include <stdio.h>
typedef struct {
float term;
float sum;
} A; // current term and sum of series A
void compute_A ( int n, A * res)
{
int i;
float anm1, // a[n-1]
anm2; // a[n-2]
// special case for n<=1
if ( n == 1 )
{
res-> sum = res-> term = 1 ;
return ;
}
if ( n <= 0 )
{
res-> sum = res-> term = 0 ;
return ;
}
// initial terms
anm2 = anm1 = 1 ;
// initial sum
float sum = anm1+ anm2;
// compute the remaining n-2 terms and cumulate the sum
for ( i = 2 ; i != n ; i++ )
{
// curent term
float an = ( ( 8 * anm1* anm1) - 1 ) / anm2;
// cumulate sum
sum += an;
// shift computation window
anm2 = anm1;
anm1 = an;
printf ( "index %d : term %g sum %g\n " , i
, an
, sum
) ; }
// report result
res-> sum = sum;
res-> term = anm1;
}
int main ( void )
{
int n;
A res;
printf ( "\n Input N of term an: " ) ;
compute_A ( n, & res) ;
printf ( "\n a%d=%f" , n
, res.
term ) ; printf ( "\n \n S(%d)=%f" , n
, res.
sum ) ; }
I2luY2x1ZGUgPHN0ZGlvLmg+CiAKdHlwZWRlZiBzdHJ1Y3QgewpmbG9hdCB0ZXJtOwpmbG9hdCBzdW07Cn0gQTsgLy8gY3VycmVudCB0ZXJtIGFuZCBzdW0gb2Ygc2VyaWVzIEEKIAp2b2lkIGNvbXB1dGVfQSAoaW50IG4sIEEgKiByZXMpCnsKaW50IGk7CmZsb2F0IGFubTEsIC8vIGFbbi0xXQphbm0yOyAvLyBhW24tMl0KIAovLyBzcGVjaWFsIGNhc2UgZm9yIG48PTEKaWYgKG4gPT0gMSkKewpyZXMtPnN1bSA9IHJlcy0+dGVybSA9IDE7CnJldHVybjsKfQppZiAobiA8PSAwKQp7CnJlcy0+c3VtID0gcmVzLT50ZXJtID0gMDsKcmV0dXJuOwp9CiAKLy8gaW5pdGlhbCB0ZXJtcwphbm0yID0gYW5tMSA9IDE7CiAKLy8gaW5pdGlhbCBzdW0KZmxvYXQgc3VtID0gYW5tMSthbm0yOwogCi8vIGNvbXB1dGUgdGhlIHJlbWFpbmluZyBuLTIgdGVybXMgYW5kIGN1bXVsYXRlIHRoZSBzdW0KZm9yIChpID0gMiA7IGkgIT0gbiA7IGkrKykKewovLyBjdXJlbnQgdGVybQpmbG9hdCBhbiA9ICgoOCAqIGFubTEqYW5tMSkgLSAxKS9hbm0yOwogCi8vIGN1bXVsYXRlIHN1bQpzdW0gKz0gYW47CiAKLy8gc2hpZnQgY29tcHV0YXRpb24gd2luZG93CmFubTIgPSBhbm0xOwphbm0xID0gYW47CnByaW50ZiAoImluZGV4ICVkIDogdGVybSAlZyBzdW0gJWdcbiIsIGksIGFuLCBzdW0pOwp9CiAKLy8gcmVwb3J0IHJlc3VsdApyZXMtPnN1bSA9IHN1bTsKcmVzLT50ZXJtID0gYW5tMTsKfQogCmludCBtYWluICh2b2lkKQp7CmludCBuOwpBIHJlczsKcHJpbnRmKCJcbklucHV0IE4gb2YgdGVybSBhbjogIik7CnNjYW5mKCIlZCIsJm4pOyBwcmludGYoIlxuIik7CiAKY29tcHV0ZV9BIChuLCAmcmVzKTsKIApwcmludGYoIlxuYSVkPSVmIixuLHJlcy50ZXJtKTsKcHJpbnRmKCJcblxuUyglZCk9JWYiLG4scmVzLnN1bSk7Cn0=