Fatorial. O fatorial de um inteiro não negativo n é escrito como n! (pronuncia-se ‘n fatorial’) e é definido da seguinte forma:

n! = n · (n - 1) · (n - 2) · … · 1 (para valores de n maiores ou iguais a 1)

e

n! = 1 (para n = 0).

Por exemplo, 5! = 5 · 4 · 3 · 2 · 1, que é 120.

a) Escreva um programa que leia um inteiro não negativo e calcule e imprima seu fatorial.

b) Escreva um programa que calcule o valor da constante matemática e usando a fórmula:

ⅇ = 1 + 1 1 ! + 1 2 ! + 1 3 ! + ⋯

c) Escreva um programa que calcule o valor de ⅇ x usando a fórmula:

ⅇ = 1 + x 1 ! + x 2 2 ! + x 3 3 ! + …

Passo 1

Fala Galera!!! Tudo certo? Espero que sim!!! Bora para mais um exercício.

Vamos escrever três programas que sejam capazes de calcular o fatorial de um inteiro não negativo, a constante matemática e, e também o valor de ⅇ x . O enunciado do exercício nos informa sobre as formulas necessária para realizar cada um dos cálculos. Agora só precisamos passar isso para o nosso código.

Passo 2

Escrevendo o programa da letra a):

#include

int main()

{

int n; /* fator de multiplicação atual */

int number = -1; /* número de entrada */

unsigned factorial = 1; /* fatorial resultante */

/* loop até entrada válida */

do {

printf("Digite um inteiro positivo: ");

scanf( "%d", &number );

} while ( number

n = number;

/* calcula fatorial */

while( n >= 0 ) {

if ( n == 0 ) {

factorial *= 1;

} /* end if */

else {

factorial *= n;

} /* end else */

--n;

} /* end while */

/* exibe fatorial */

printf( "%d! = %u\n", number, factorial );

return 0;

} /* end main */

A saída será:

Passo 3

Escrevendo o programa da letra b):

#include

int main()

{

int n = 0;

/* contador de loop para precisão */

int fact = 1;

/* atual n fatorial */

int accuracy = 1; /* grau de precisão */

double e = 0;

/* valor estimado atual de e */

printf("Digite o grau de precisao: ");

scanf("%d", &accuracy);

/* loop até o grau de precisão */

while( n

if ( n == 0 ) {

fact *= 1;

} /* end if */

else {

fact *= n;

} /* end else */

e += 1.0 / fact;

++n;

} /* end while */

printf( "e = %f\n", e );

/* exibe o valor estimado */

return 0;

} /* end main */

A saída será:

Passo 4

E por ultimo escrevendo o programa da letra c):

#include

int main()

{

int n = 0; /* contador */

int accuracy = 1; /* grau de precisão */

int x = 3; /* expoente */

int times = 0; /* contador */

int count; /* cópia de n */

double e = 1.0;

/* e elevado à potência x */

double exp = 0.0;

/* x elevado à potência n */

double fact = 1.0;

/* n fatorial */

printf("Digite o grau de precisao: ");

scanf("%d", &accuracy);

/* loop enquanto menos que o grau de precisão */

while( n

count = n;

/* atualização n! */

if ( n == 0 ) {

fact *= 1.0;

} /* end if */

else {

fact *= n;

} /* end else */

while ( times

/* calcula x elevado à potência n */

if ( times == 0 ) {

exp = 1.0;

exp *= x;

} /* end if */

else {

exp *= x;

} /* end else */

++times;

} /* end while */

e += exp / fact; /* atualiza e elevado à potência x */

++n;

} /* end while */

/* exibe o resultado */

printf( "e elevado a potencia %d = %f\n", x, e );

return 0; /* indicate successful termination */

} /* end main */

A saída será:

E assim finalizamos mais um exercício!!! Até o próximo galera!!

Resposta

Desenvolvimento acima.