Invertendo dígitos. Escreva uma função que leia um valor inteiro e retorne o número com seus dígitos invertidos. Por exemplo, dado o número 7631, a função deverá retornar 1367
Passo 1
Fala Galeraa!!! Bora escrever essa função juntos!!!
A função terá que analisar cada digito do número. Por exemplo, ao digitar o número 7631 a função irá percorrer todos os dígitos do número 7,6,3,1. Cada digito representa milhar, centena, dezena e unidade respectivamente. Logo para inverter o número o 7 que representa o milhar 7000 tem que virar 7, o 6 representa a centena 600 tem que virar 60, o 3 representa a dezena 30 tem que virar 300 e por fim 1 que representa a unidade tem que virar 1000. Somando os resultados teremos o número invertido 1000+300+60+7 = 1367
Passo 2
Sabendo dessa lógica vamos pôr a mão na massa e escrever nossa função. A principio nossa função irá precisar de 3 variáveis auxiliares. Essas variáveis serão responsáveis por armazenar o número invertido, fazer a divisão e a multiplicação. Criado essas variáveis é preciso de um laço de repetição que percorre todos os dígitos do número.
Passo 3
Para o nosso programa será possível fazer a inversão de números de 1 até 9999. Portanto, o divisor recebe o valor inicial de 1000, ou seja, dentro do laço de repetição é colocado a condição para analisar o primeiro digito de milhar e transformar ele em unidade. Em seguida, os valores do número, do divisor e do multiplicador são atualizados para verificar o próximo digito que será a centena, o processo é repetido até chegar na unidade. Então o programa sai do laço de repetição e retorna a variável responsável por armazenar cada digito invertido. Por fim escrevendo nossa função ela será:
/* função para inverter os digito do número */
int reverseDigitos(int n){
int reverse = 0; /* reverter o número */
int divisor = 1000; /* divisor*/
int multiplicador = 1; /* multiplicador */
/* loop para percorrer todos os dígitos do número */
while (n > 9){
/* se n > = divisor, determinar o digito */
if (n >= divisor){
/* atualizar o número invertido com o digite atual */
reverse += n/divisor * multiplicador;
/*atualizar n */
n %= divisor;
/* atualizar divisor */
divisor /= 10;
/*atualizar multiplicador */
multiplicador *= 10;
} /*final do if */
else { /* caso contrário, sem digito */
/*atualiza divisor */
divisor /= 10;
} /* final do else */
} /* final do while */
reverse += n * multiplicador;
/*retorna número invertido */
return reverse;
} /* fim da função inverter dígitos */
Tudo prontinho!!! Agora é só escrever o nosso programa e partiu próximo exercício.
Resposta
O nosso programa final será:
