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!