-----------------------------------------------------------------------------
 MAC-115  - -  Aula sobre variaveis do tipo double (para no.s reais) - series
=============================================================================

/*
 * arquivo: cos.c
 * Dados x real e n natural, calcular uma aproximação para cos(x)
 * através dos n primeiros termos da série.
 * Esta aproximacao é boa só em torno do zero. 
 */

#include <stdio.h>
#include <math.h>  //  para fazer o calculo de cos(x) usando a funcao cos(.)
                  // da biblioteca math.  Veja o ultimo printf.
int main()
{
    int n, k;
    double fatorial, x, cosx, termo;
                   // Veja: fatorial declarado como 'double'
    printf("Forneça o valor do ângulo em radianos: ");
    scanf("%lf", &x);
    printf("Número de termos: ");
    scanf("%d", &n);
    cosx = 1.0;
    fatorial = 1.0; 
    termo = 1.0;
    for (k = 1; k < n; k++) {
        termo =  - (termo * x * x); // veja o sinal 
        fatorial = fatorial * (2 * k -1) * (2 * k); //<==== calculo do fatorial
                                          // aproveitando o fatorial anterior.
        cosx = cosx + termo/fatorial;   
       
    }
    printf("cos(%g) = %g\n", x, cosx);
    printf("Usando a funcao cos(.) ja' disponivel:  cos(%g) = %g\n", x, cos(x));
    return 0;
}

==========================================================

/*
 * arquivo: cos.c
 * Dados x real e n natural, calcular uma aproximação para cos(x) através dos n
 * primeiros termos da série.
 * Aproximacao boa em torno do zero. <=========
 */

#include <stdio.h>
#include <math.h>  // <=== para fazer o calculo de cos(x) usando a funcao cos(.)
                        // da biblioteca math.  Veja o ultimo printf.
int main()
{
    int n, k;
    double fatorial, x, cosx, termo;
                   // Veja: fatorial declarado como 'double'
    printf("Forneça o valor do ângulo em radianos: ");
    scanf("%lf", &x);
    printf("Número de termos: ");
    scanf("%d", &n);
    cosx = 1.0;
    fatorial = 1.0; 
    termo = 1.0;
    for (k = 1; k < n; k++) {
        termo =  - (termo * x * x); // veja o sinal 
        fatorial = fatorial * (2 * k -1) * (2 * k); //<==== calculo do fatorial
                                          // aproveitando o fatorial anterior.
        cosx = cosx + termo/fatorial;   
       
    }
    printf("cos(%g) = %g\n", x, cosx);
    printf("Usando a funcao cos(.) ja' disponivel:  cos(%g) = %g\n", x, cos(x));
    return 0;
}