Ir ao conteúdo

C Problema ao calcular Fatorial de um número em C


Ir à solução Resolvido por Aoi Todo,

Posts recomendados

Postado

Eu preciso fazer um programa em C para a faculdade e deve calcular o fatorial de um número e exibi-lo, até ai tudo bem, eu consigo calcular o fatorial, mas preciso exibi-lo com uma mensagem informativa EX: o fatorial de 4 é 24 e logo abaixo como sua notação matemática EX: !4 = 4.3.2.1 = 24, eu consigo efetuar o calculo mas exibe sempre: o fatorial de 1 é 24, independente de qual seja o numero informado sempre vai aparecer "1", e não consigo exibir a notação matemática,

meu código:

#include <stdio.h>

int main ()
{
        int A=0, fat=0;
        printf("\n");
        printf("**O fatorial de um número natural é o produto\n desse número por todos os menores**");
        printf("\nDigite aqui o número para calcular seu fatorial: ");
        scanf("%d", &A);
        for (fat = 1; A>1; A = A-1)
        {
            fat = (fat*A);
        }
        printf("O fatorial de %d é %d.", A, fat);
}

 

problema.png

  • Curtir 1
  • Membro VIP
Postado

Isso ocorre porque você está modificando o valor inicial de A, cada vez que ele é decrementado no for pelo " A-1"

Um jeito simples de resolver é salvar o valor em duas variáveis, da seguinte forma:

#include <stdio.h>

int main ()
{
        int A=0, fat=0;
  		int auxiliar;
        printf("\n");
        printf("**O fatorial de um número natural é o produto\n desse número por todos os menores**");
        printf("\nDigite aqui o número para calcular seu fatorial: ");
        scanf("%d", &A);
  		auxiliar = fat;
        for (fat = 1; A>1; A = A-1)// aqui você esta modificando o valor de A
        {
            fat = (fat*A);
        }
        //printf("O fatorial de %d é %d.", A, fat);/ printf antigo
  
  		printf("O fatorial de %d é %d.", auxiliar, fat);// novo printf
}

 

  • Curtir 1
Postado

@Arthur Vandellay Eu fiz da maneira que explicou e agora aparece sempre : o fatorial de 0 é 120 (usando 5 como exemlpo),

independente do número que coloco vira sempre 0.

adicionado 3 minutos depois

@Arthur Vandellay  Eu consegui consertar estabelecendo o o valor de auxiliar com A

 

auxiliar = A;

 

adicionado 4 minutos depois

@Arthur Vandellay Mas sua resposta acabou por me ajudar muito, obrigado 😀

adicionado 8 minutos depois

Mas agora eu tenho outra duvida, preciso apresentar embaixo dessa mensagem, a notação matematica sendo ela

5! é igual a 5.4.3.2.1 é igual a 120. (sendo o fatorial de 5)

 como posso exibir essa mensagem logo abaixo da: "O fatorial de %d é %d"?

  • Curtir 1
  • Membro VIP
  • Solução
Postado

Haha eu tinha escrito erra desculpa por isso

 

Pra fazer isso, você pode fazer um "for", igual o que você usou para calcular o fatorial. Tipo isso:

 

printf( "%d! é igual a ", auxiliar);
for ( A = auxiliar ; A>= 1 ; A--)// auxiliar-- é o mesmo que auxiliar = auxiliar - 1
{
	printf("%d.", A );// isso sera o 5.4.3.2.1
{
printf(" é igual a %d", fat );

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!