Ir ao conteúdo
  • Cadastre-se

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


josneicavaco

Posts recomendados

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!

Link para o comentário
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;    }
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!