Ciao, io dovrei creare un programma C che mi calcoli il ln(1+x) inserendo x da tastiera e approssimando la funzione mediante il polinomio di Taylor. Ho fatto questo codice ma non mi approssima il valore in modo corretto. In particolare secondo me c'è un errore nel calcolo degli addendi del polinomio x^3/3, x^4/4....
Il codice che ho scritto è questo, grazie mille in anticipo

/*Scrivere un programma C++ che realizza un'approssimazione polinomiale (facendo uso del polinomio di Taylor con x0=0) della funzione
log(1+x) che sia accurata entro la tolleranza acquisita da tastiera per ogni x appartenente all'intervallo(0;1/2).
Considerare per il criterio di arresto il modulo dell'errore relativo.*/


#include<stdio.h>
#include<stdlib.h>
#include<math.h>

double leggix();
double leggieps();
double ln(double x, double eps);
void stampa(double, double);

main()
{
double x, eps, app;

x=leggix();

eps=leggieps();

app=ln(x, eps);

stampa(x, app);

system("PAUSE");
return 0;
}

double leggix()
{
double x;

do
{
printf("\n CALCOLO DELLA FUNZIONE ln(1+x)\n\n");

printf("\n Quanto vale il parametro x= ");
scanf("%lf", &x);
}
while((x<0)&&(x>1/2));

return x;
}


double leggieps()
{
double eps;

printf("\n\n Inserire la tolleranza richiesta eps=");
scanf("%lf", &eps);

return eps;
}


double ln(double t, double eps)
{
double delta=0, ln=t, pot=t; int sign=1, cont=1;



do
{
sign=-sign;

cont++;

pot=pot*t;

delta=sign*pot/cont;

ln+=delta;
}
while(fabs(delta/ln)>eps);

return ln;
}


void stampa(double x, double app)
{
printf("\n Il risultato finale e' ln(1+%lf)=%lf \n\n", x, app);

printf("\n La libreria matematica dice ln(1+%lf)=%lf\n\n",x, log(1+x));

return;
}