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:
c) Escreva um programa que calcule o valor de usando a fórmula:
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 . 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.