Dado um número inteiro de 3 dígitos, calcular o número formado pelos dígitos do número dado na
forma inversa. Por exemplo: se for dado 348, imprimir 843. Verificar se o número tem 3 dígitos.
Alguém sabe como fazer isso em linguagem C?
Respostas
Resposta:
Explicação:
O maior problema é pegar um dígito individual. Você poderia usar strings, mas isso deixa a questão fácil demais.
Por exemplo, o número 123 deveria gerar a saída 321.
Para pegar a casa das centenas, vemos quantas vezes o número 100 cabe em 123.
Então: 123/100 (divisão inteira!). Nesse caso, resultará em 1.
Para pegar as casas das dezenas, devemos pegar o resto da divisão passada e ver quantas vezes o número 10 cabe nela.
Então: (123 % 100) / 10. 123 % 10 é 23 e 23/10 é 2.
Para pegar as casas das unidades, devemos pegar o resto da divisão passada, ao invés de divisão inteira.
Então ao invés de fazer 23/10, fazemos 23 % 10. É 3.
Juntando tudo, temos 1, 2 e 3, cada um desses valores em variáveis diferentes.
Agora basta colocar tudo junto. A terceira variável é multiplicada por 100 (centenas), a segunda variável é multiplicada por 10 (dezenas), a primeira variável é multiplicada por 1 (ou seja, fazemos nada com ela).
3 * 100 + 2 * 10 + 1 * 1 = 300 + 20 + 1 = 321, que é 123 invertido.
Exemplo: Para encontrar o segundo dígito ("i" é 1) de 123, fazemos:
23 / 10^1 = 2.
O número entre os índices 1 e 0 (ou seja, "i" é 1) de 123 é:
123 % 10^(1+1) = 123 % 10^(2) = 123 % 100 = 23
Combinando essas duas condições, temos que o número não pode ter menos que 3 casas e não pode ter mais que 3 casas.