Buenos días. Os mando este post porque tengo problemas al calcular el exponencial de un numero. Debería poder hacerlo sin funciones ni nada y, por supuesto, sin utilizar la función "exp" de la librería math.
El ejercicio dice así: Realizar un algoritmo que lea un número x mayor que cero y calcule su exponencial de la forma
e<x>=1+(x<1>/1!)+(x<2>/2!)+(x<3>/3!)+...+x<i>/i!); siendo "i" el primer término que hace |x<i+1>/(i+1)!|<0.001
La cosa es que mi programa funciona bien de 1 a 3. A partir de ahí, devuelve resultados que no son correctos, así como cuando el número iintroducido es de tipo REAL.
Aquí está el código, por si veis el/los fallos.
Gracias a todos!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//EXPONENCIAL DE UN NUMERO
/*Funcion que calcula el factorial de un numero*/
int factorial (int x){
   if(x!=1){
      return(x*factorial(x-1));
   }
   return 1;
}
/*Algoritmo -> Exponencial de un numero*/
int main (void){
   //DECLARACION DE VARIABLES
   double numero;               //numero al que se calcula al exponencial
   float exponumero;            //la exponencial de dicho numero (salida)
   int i=-1, a;                  //contadores
   float aproximacion, aux;      //intermedias
   /*Leer variables*/
   printf("Numero al que se calcula la exponencial: ");
   scanf("%lf", &numero);   
   //OPERACIONES
   /*Encontrar el primer termino que cumple <0.001*/
   do{
      i=i+1;
      aproximacion=pow(numero, (i+1))/factorial(i+1);
   }while(!(aproximacion<0.001));   
   /*Calcular el factorial*/
   exponumero=1;            //asi se añade el "1+" de la sucesion
   for(a=1; a<=i; a++){
      aux=pow(numero, a)/factorial(a);
      exponumero=exponumero+aux;
   }   
   //RESULTADOS
   printf("El exponencial de %lf es:   %ft", numero, exponumero);   
   return 1;
}
Un saludo!