Ir ao conteúdo
  • Cadastre-se
josneicavaco

Ajuda em conversão de base com função fatorial!

Recommended Posts

E ai pessoal? Bom, estou com algumas dúvidas, estou começando a programar faz pouco tempo e tenho um desafio a ser feito pelo qual eu não sei por onde começar. Preciso apenas de algumas dicas para saber por onde começo. O enunciado do desafio é bem maluco, vejam:

Um aluno ingressante de matemática resolveu desenvolver uma notação nova para representação de números inteiros. Sua representação, chamada a princípio de "Tenho-Muito-Tempo-Livre" (TMTL), utiliza os mesmos dígitos da base decimal, ou seja, os dígitos 0 a 9.

Para fazer a conversão da notação TMTL para decimal, você precisa fazer uma soma de k termos, sendo k o número de dígitos na representação TMTL do número. O valor do i-ésimo termo da soma, que está associado ao i-ésimo dígito ai da representação TMTL, é dado por ai × i!, onde i! é o fatorial de i. Por exemplo:

719TMTL = 7 × 3! + 1 × 2! + 9 × 1! = 7 × 6 + 1 × 2 + 9 × 1 = 5310

Como o aluno está começando seus estudos na teoria dos números, ele ainda não sabe exatamente quais as propriedades que um sistema numérico deve ter. No entanto, no momento ele precisa de uma ferramenta para fazer a conversão de números na representação TMTL para decimal, e esta é a sua tarefa.

Você deve escrever um programa que receba como entrada um número qualquer positivo, em representação TMTL (valor máximo 9999TMTL), e mostre em sua saída a representação decimal da entrada."

Exemplo 1 de execução:

719

53

Exemplo 2 de execução:

15

7

(Obs: O sublinhado é o número na base TMTL e embaixo é na base decimal)

Só estou precisando de um norte, alguma dica por onde começar. Como eu poderia fazer função fatorial em C? Não sei como diferenciar os casas do número! Se alguém puder me ajudar serei muito grato, valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente implemente a função fatorial.

Por exemplo,

    int i = 1;        while(n) i *= n--;    return i;
Onde n é o parâmetro da função. Veja que vou atribuindo a i o produto de i pelo valor de n que vai sendo decrementado a cada ciclo.

Para pegar os dígitos do número, você pode criar um loop que vai dividindo o número por 10 e ir pegando o módulo desse número por dez, por exemplo:

    while(x){        printf("%d\n", x % 10);        x /= 10;    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 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

×