Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/02/2015, 21:58
braedu555
 
Fecha de Ingreso: febrero-2015
Mensajes: 20
Antigüedad: 9 años, 2 meses
Puntos: 0
duda sobre float y sacar constante e

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.