sexta-feira, 18 de março de 2016
Programa de cálculo do Fatorial em C
Bom dia,
Seguindo nossa sequência de exercícios, em linguagem C, hoje calcularemos o Fatorial de determinados números definidos pelo usuário. Como o cálculo em si é simples, adicionei a este programa algumas sugestões que dei em exercícios anteriores, como só aceitar números positivos e
dar a opção ao usuário de executar o programa novamente.
Segue abaixo o código comentado:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int num1;
unsigned long int total; /* Como o calculo do fatorial pode retornar numeros altos, declaramos
a variavel int (numero inteiro) como unsigned long, onde não considera os numeros negativos.
o long int tem 16 bits(pode variar de acordo com seu processador) o que o faz suportar numeros de -2147483647, até + 2147483647. Com o undigned, esse valor vai de 0 até +4294967294*/
char continua;
do { /* A estrutura DO faz basicamente a mesma coisa que o WHILE, porém com a diferenca que a verificação da condição é feita no final, o que obriga a executar no minimo uma vez código entre o DO / WHILE*/
/* Entrada de dados*/
do{
printf("\n Digite um numero positivo para calculo de seu fatorial \n");
scanf("%d", &num1);
}while(num1 < 0); /* Não permite números negativos*/
/*o fatorial é o produto de determinado numero de 1 até N
No nosso programa multiplicamos n * n -1 até 1
Porem todas as variaveis quando criadas, estão zeradas
Para a primeira multiplicação, consideramos o valor de 1 * N*/
total = 1;
/* Processamento */
while(num1 != 0)
{
total = total * num1;
if (num1 > 1 ){
printf("%d * ", num1);
}else {
printf("%d ", num1);
}
num1 = num1 - 1;
}
printf(" = %d", total);
fflush(stdin); /* Necessário para limpar o buffer do teclado, caso contrario não irá ler a operação*/
do{
printf("\n Deseja calcular outro numero ? (Y / N ))\n");
scanf("%c", &continua);
fflush(stdin); /* Necessário para limpar o buffer do teclado, caso contrario não irá ler a operação*/
/*&& = Operador "E". Ex.: Se continua diferente de Y e continua diferente de y, etc */
if (continua != 'Y' && continua != 'y' && continua != 'N' && continua != 'n' )
{
printf("\n Opcao invalida !!! \n ");
}
/*Só sai do loop com uma operacao valida*/
}while(continua != 'Y' && continua != 'y' && continua != 'N' && continua != 'n' );
/*Se o usuario digitar Y, calcula outro fatorial, caso contrario termina o programa */
}while (continua == 'Y' || continua == 'y' );
return 0;
}
Fiquem a vontade para testar e melhorar o código!
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário