Ir ao conteúdo
  • Cadastre-se

Erro - Fatorial


robmaggot

Posts recomendados

Olá! Criei o seguinte código para calcular fatoriais para um número 'x' que segue: 0<=x<13

#include <stdlib.h>#include <stdio.h>#include <math.h> main (){    int fat, x, aux;     printf ("Digite o numero que deseja calcular o fatorial e aperte enter: ");    scanf ("%d", &x);     aux=x;    fat=1;     if (x>=13)    {        printf ("O programa nao calcula o fatorial desse numero!\n");    }        else        {            while (x>0)            {                fat=fat*x;                x=x-1;            }             printf ("O fatorial do numero %d e igual a: %d\n", aux, fat);        }     if (x<0)    {        printf ("O programa nao calcula o fatorial desse numero!\n");    }     system ("pause");}
 
Se eu forneço um valor 'x' maior ou igual a 0, o programa funciona perfeitamente! Mas, ao colocar um valor 'x' menor que zero, acontece isso:
 
post-718043-0-62061100-1396388499_thumb.
 
Era pra estar aparecendo apenas "O programa nao calcula o fatorial desse numero!"... o que pode estar errado?
 
Obrigado!
Link para o comentário
Compartilhar em outros sites

Isto acontece porque você esqueceu de colocar a verificação para números negativos em primeiro lugar. Veja que o fatorial só é calculado caso o número seja menor que 13

if (x>=13){}else

Isto no seu código. O correto seria

main (){    int fat, x, aux;     printf ("Digite o numero que deseja calcular o fatorial e aperte enter: ");    scanf ("%d", &x);     aux=x;    fat=1;     if (x >= 13 || x < 0)    {        printf ("O programa nao calcula o fatorial desse numero!\n");    }    else    {        while ( x-- > 0)        {            fat *= x;        }         printf ("O fatorial do numero %d e igual a: %d\n", aux, fat);    }     system ("pause");}

Perceba que editei algumas coisas, como a multiplicação das variáveis e a decrementação.

 

Abraços.

Link para o comentário
Compartilhar em outros sites

Isto acontece porque você esqueceu de colocar a verificação para números negativos em primeiro lugar. Veja que o fatorial só é calculado caso o número seja menor que 13

if (x>=13){}else

Isto no seu código. O correto seria

main (){    int fat, x, aux;     printf ("Digite o numero que deseja calcular o fatorial e aperte enter: ");    scanf ("%d", &x);     aux=x;    fat=1;     if (x >= 13 || x < 0)    {        printf ("O programa nao calcula o fatorial desse numero!\n");    }    else    {        while ( x-- > 0)        {            fat *= x;        }         printf ("O fatorial do numero %d e igual a: %d\n", aux, fat);    }     system ("pause");}

Perceba que editei algumas coisas, como a multiplicação das variáveis e a decrementação.

 

Abraços.

@DolbyCpp, o seguinte também funcionou sem a condição l l.

#include <stdlib.h>#include <stdio.h>#include <math.h> main (){    int fat, x, aux;     printf ("Digite o numero que deseja calcular o fatorial e aperte enter: ");    scanf ("%d", &x);     aux=x;    fat=1;     if (x>=13)    {        printf ("O programa nao calcula o fatorial desse numero!\n");    }        else        {            if (x>=0)            {                while (x>0)                {                    fat=fat*x;                    x=x-1;                }             printf ("O fatorial do numero %d e igual a: %d\n", aux, fat);            }        }     if (x<0)    {        printf ("O programa nao calcula o fatorial desse numero!\n");    }     system ("pause");}
Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!