viciado 1 Denunciar post Postado Junho 17, 2008 Calcular o valor de E E=1+1/1!+1/2!+1/3!+...+1/n! #include <stdio.h> int main(void) { int n,i,j,fat; float e; printf("\n E=1+1/1!+1/2!+1/3!+...+1/n!\n"); printf("\n Digite um valor para N\n"); scanf("%d",&n); e=1; for(i=1; i<=n; i++) { fat=1; for(j=1; j<=i; j++) { fat=fat*j; } e=e+1/fat; } printf("\n\n%d é o valor de E\n\n",e); } O resultado é sempre 0, se eu colocar a variavel e como int a resposta da o resultado esperado, porém sem precisão.(Não tem os valores após a vírgula) Alguém me ajuda ai Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 17, 2008 Logico que vai dar 0. Int não é ponto flutuante; representa os inteiros e não os racionais; não tem casa depois da virgula.Olha como você está imprimindo o float... Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Junho 18, 2008 Mais para obter a resposta exata não teria que ser float? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 18, 2008 Mas você tem que IMPRIMIR como float e nao como inteiro... Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Junho 18, 2008 Mas você tem que IMPRIMIR como float e nao como inteiro... Ah claro vlw Agora fiz assim: #include <stdio.h> int main(void) { int n,i,j,fat; float e; printf("\n E=1+1/1!+1/2!+1/3!+...+1/n!\n"); printf("\n Digite um valor para N\n"); scanf("%d",&n); e=1; for(i=1; i<=n; i++) { fat=1; for(j=1; j<=i; j++) { fat=fat*j; } e=e+1/fat; } printf("\n\n%f é o valor de E\n\n",e); } Só que não importa o valor de N que eu coloco a resposta é sempre 2.000000 Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 18, 2008 Outra vez: você esta divindo INTEIROS. VAI aparecer 0. Isso se chama truncagem. Divida um float (Fracoes sao floats) Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Junho 18, 2008 Outra vez: você esta divindo INTEIROS. VAI aparecer 0. Isso se chama truncagem. Divida um float (Fracoes sao floats) Vlw, agora consegui. Grande ajuda Compartilhar este post Link para o post Compartilhar em outros sites
Pizzol 0 Denunciar post Postado Junho 18, 2008 #include <stdio.h> int main(void) { int n,i,j,fat; float e; printf("\n E=1+1/1!+1/2!+1/3!+...+1/n!\n"); printf("\n Digite um valor para N\n"); scanf("%d",&n); e=1; for(i=1; i<=n; i++) { fat=1; for(j=1; j<=i; j++) { fat=fat*j; } e=e+1/fat; } printf("\n\n%f é o valor de E\n\n",e); } Para resolver seu problema declare sua variável 'fat' como float. Ou quanto for divisão por números coloque um '.0' ou declare sua divisão float antes dela. ex: " e= float(e+1/fat) " " e=e+1/1.0 " Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Junho 18, 2008 OK obrigado, o import java.Isis ja tinha me explicado, mais vlw Compartilhar este post Link para o post Compartilhar em outros sites