Ciao a tutti, qualcuno mi può dare delle dritte? Devo trovare il valore della funzione tangente con angolo noto. Ho provato prima a farlo solo per cosx e mi viene:

codice:
#include <stdio.h>
#include <math.h>

float cosine(float, float);

int main()
{


    float ang,rad,acc;

    ang=10;

    rad=((ang*3.141592)/180);
    acc=4;
    printf("Programma per il calcolo del coseno di un angolo\n");
    printf("mediante sviluppo in serie di Taylor\n");



    printf("Il coseno di %f vale %f\n",ang,cosine(rad,acc));
#ifdef DEBUG
    printf("Per confronto la funzione di libreria fornisce il valore %f\n",
           cos(rad));
#endif
    system("PAUSE");
    return 0;
}

float cosine(float rad, float acc)
{
    float previsto, corrente, x;
    int nfatt=1, sign=1;
    int n, nmax=120;


    previsto = 1;
    x = 1;

    for (n=1; n<nmax; n++)
    {
        nfatt = nfatt*(2*n)*(2*n-1);
        sign = sign*(-1);
        x = x*rad*rad;
        corrente = previsto + (sign*x)/nfatt;
        if ( fabs(previsto - corrente) < fabs(acc) ) return corrente;
        previsto  = corrente;
    }

    printf("Numero massimo di cicli superato\n");
    return corrente;
}
poi ho provato con senx, ma il risultato non so per quale motivo non viene:
codice:
#include <stdio.h>
#include <math.h>


float senine(float,float);

int main()
{
    float ang,rad,acc;

    ang=10;

    rad=((ang*3.141592)/180);
    acc=4;

    printf("Programma per il calcolo di sen(10)\n");
    printf("con sviluppo in serie di Taylor\n");
    printf("il seno di 10 vale %f\n",ang,senine(rad,acc));
#ifdef DEBUG
    printf("Per confronto la funzione di libreria fornisce il valore %f\n",
           sen(ang));
#endif

    system("PAUSE");
    return 0;
}

float senine(float rad, float acc)
{

    float pre, cur, y, z;
    int fatt=1, segn=1;
    int m, ntot=70;

    pre = 1;
    y=1;
    z=1;
    for (m=1; m<ntot; m++)
    {
        fatt = fatt*(2*m+1)*(2*m);
        segn = segn*(-1);
        y=y*rad*rad;
        z=y*rad;
        cur = pre + (segn*z)/fatt;
        if ( fabs(pre - cur) < fabs(acc) ) return cur;
        pre = cur;

    }
}
per ultimo ho provato a d unirli per ricavare la tangente tramite senx/cosx....ma non so come implementare tan=senx/cosx:
codice:
#include <stdio.h>
#include <math.h>

float coseno(float,float);
float seno(float,float);

int main()
{
    float ang,rad,acc,tan;

    ang=10;
    rad=((ang*3.141592)/180);
    acc=4;
    tan=(seno(rad,acc)/coseno(rad,acc));
    printf("Programma per il calcolo della tangente di 10 gradi sessagesimali\n");
    printf("mediante sviluppo in serie di Taylor\n");


    printf("la tangente di 10 vale %f\n",tan);

    system("PAUSE");
    return 0;
}

float coseno(float rad, float acc)
{
    float prev, curr, x;
    int nfatt=1, sign=1;
    int n, nmax=70;

    prev = 1;
    x = 1;

    for (n=1; n<nmax; n++)
    {
        nfatt = nfatt*(2*n)*(2*n-1);
        sign = sign*(-1);
        x = x*rad*rad;
        curr = prev + (sign*x)/nfatt;
        if ( fabs(prev - curr) < fabs(acc) ) return curr;
        prev = curr;
    }
    printf("Numero massimo di cicli superato\n");
    return curr;
}



float seno(float rad, float acc)
{
    float pre, cur, y, z;
    int fatt=1, segn=1;
    int m, ntot=70;

    pre = 1;
    y=1;
    z=1;
    for (m=1; m<ntot; m++)
    {
        fatt = fatt*(2*m+1)*(2*m);
        segn = segn*(-1);
        y=y*rad*rad;
        z=y*rad;
        cur = pre + (segn*z)/fatt;
        if ( fabs(pre - cur) < fabs(acc) ) return cur;
        pre = cur;
    }
    printf("Numero massimo di cicli superato\n");
    return cur;
}
mi potete aiutare??