Estoy tratando de encontrarle el error a mi ejercicio de Exponencial y no lo veo. Creo que el problema está en el tipo de dato que estoy usando en la función potencia. probé con int y a partir de la potencia 14 me la calcula mal!. Puse double y directamente me calcula todo mal y ahora pruebo con long int y tengo el mismo problema que con int.
Si alguien lo puede ver se los dejo!
Código:
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
double exponencial(int,double);
int factorial(int);
long int potencia(int,int);
int vector(int[]);
void main(void)
{
int num;
double tol;
printf("Ingrese un numero entero: ");
scanf("%d",&num);
printf("Ingrese la tolerancia: ");
scanf("%lf",&tol);
printf("e elevado a %d es: %ld \n", num, exponencial(num,tol));
}
///////////////////////////////////////////////////
int factorial(int num)
{
int f=1,i;
for(i=1;i<=num;i++)
f*=i;
return f;
}
////////////////////////////////////////////////////
long int potencia(int x, int y)
{
int i;
long int pot=1;
for(i=0;i<y;i++)
pot*=x;
printf("%ld elevado a %d es: %d\n",x,y,pot);
return pot;
}
/////////////////////////////////////////////////
double exponencial(int x, double t)
{
double exp=0,tot;
int i=0;
do{
tot=(double) potencia(x,i)/factorial(i);
exp+=tot;
///printf("\n%d\t%f\n\t",i,exp);
i++;
}while(t<tot);
return exp;
}