Faça um programa que leia um valor N inteiro e positivo, calcule e mostre o valor de E, conforme a fórmula a seguir: E=1+1/1!+1/2!+1/3!+...1/N! Não estou conseguindo fazer esse programa na linguagem C de jeito nenhum :(
Soluções para a tarefa
→→→
Resposta:
#include <stdio.h>
#include <string.h>
int main(){
int N, E = 1, i, j, num, fatorial;
printf("Digite um numero: ");
scanf("%d", &N);
for(i=1; i<=N; ++i){
num = 1.0/i;
fatorial = 1;
for(j=num; j>0; --j){ //calculando o fatorial de 1/i
fatorial*=num;
}
E += fatorial; //"E" é somado ao fatorial da divisão de 1 por i
}
printf("Valor de 'E': %d", E);
}
Explicação:
O cálculo do fatorial só será executado duas vezes em 1/1 e 1/2 (1/2 = 0.5 que arredondado dá 1), que dará 1 em que 1! = 1. Depois de 1/1 e 1/2 virá 1/3, 1/4... que sempre vão dar 0 (não passando pelo cálculo por conta da condição "(j>0)").
O resultado sempre será N + 1, por causa que será feita a divisão inteira de 1/i fazendo com que o resultado sempre seja 1 ou 0 em que o fatorial dos dois é 1, com isso o resultado é N que somado mais o 1 do início resulta em N+1.
Por exemplo "E" de 20:
Fatorial de 1/1 (1.000000) = 1
Fatorial de 1/2 (0.500000) = 1
Fatorial de 1/3 (0.333333) = 1
Fatorial de 1/4 (0.250000) = 1
Fatorial de 1/5 (0.200000) = 1
Fatorial de 1/6 (0.166667) = 1
Fatorial de 1/7 (0.142857) = 1
Fatorial de 1/8 (0.125000) = 1
Fatorial de 1/9 (0.111111) = 1
Fatorial de 1/10 (0.100000) = 1
Fatorial de 1/11 (0.090909) = 1
Fatorial de 1/12 (0.083333) = 1
Fatorial de 1/13 (0.076923) = 1
Fatorial de 1/14 (0.071429) = 1
Fatorial de 1/15 (0.066667) = 1
Fatorial de 1/16 (0.062500) = 1
Fatorial de 1/17 (0.058824) = 1
Fatorial de 1/18 (0.055556) = 1
Fatorial de 1/19 (0.052632) = 1
Fatorial de 1/20 (0.050000) = 1
Valor de 'E': 21
espero ter ajudado
→→→