Hola, creo que es la tercera vez que hago una pregunta en un periodo de tiempo tan breve en este foro, pero no tengo a nadie mas a quien preguntar
, sorry.
Bueno para empezar tengo 2 dudas que están relacionadas entre si, estoy estudiando el libro de deitel y estoy truncado en los dos últimos ejercicios del capitulo 3, es sobre sacar el valor aproximado de la constante "e" mediante la siguiente formula e = 1 + 1/1! + 1/2! + 1/3!...
Hice el programa pero no me devuelve ningún valor, se queda la pantalla vacía lo que me da a entender que se ha creado un ciclo infinito, pero no he dado con el error:
Código:
#include <stdio.h>
int main ()
{
float ni = 1; //es el factorial !n
float e = 1; // valor de "e"
float contador = 2; //contador lo incie en 2
float n = 2;
e += 1/ni; //aqui "e" vale 2
++ni;
while (e != 2.718055556){
while (n != 1){
ni = ni * (n-1);
--n;
}
++contador;
n = contador; //lo que hago es darle el valor de contador a "n"
e += 1/ni;
++ni;
}
printf("%f\n", e);
system("pause");
return 0;
}
Bueno aqui al principio el "contador" vale lo mismo que "n" porque en el ciclo el valor de n se pierde al restarse , y por lo tanto contador reserva el valor original y le suma 1, para luego almacenarse de nuevo en "n" y comenzar el siguiente ciclo con el factorial que sigue.
Me termina dando ciclo infinito siendo que se supone que al llegar al factorial de 7 el valor de "e" seria 2.718055556, y el ciclo se debería de romper, y desplegarme el valor de e.
Bueno la otra duda es sobre float y surgio cuando quise sacar el valor de "e", sin usar ciclos:
Código:
#include <stdio.h>
int main (){
float e;
e = 1 + 1 + (1/2) + (1/6) + (1/24) + (1/120);
printf("%f\n", e);
return 0;
}
No me despliega los decimales del numero "e" sino 2.00000, lo que me da a entender que si el primer programa funcionara me daria el mismo resultado.
Por cierto no puedo usar otro tipo de variable de mas extensión.