Ir ao conteúdo
  • Cadastre-se
robmaggot

RESOLVIDO Erro - Fatorial

Recommended Posts

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!

Compartilhar este post


Link para o post
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.

  • Curtir 1

Compartilhar este post


Link para o post
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");}

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×