Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida na resolução


anhaya

Pergunta

Estava precisando de algo que invertesse o numero digitado, achei, porém não entendi a resolução feita. alguém poderia me explicar passo a passo o que foi feito em cada parte do código.

BRIGADO. O código segue abaixo:

#include <stdio.h>
#include <stdlib.h>

int revert(int n)
{
int rever=0;
int i=1;

while(i<=n)
{
rever*=10;
rever+=(n%(i*10)-n%i)/i;
i*=10;
}
return rever;
}

main()
{
int num, rev;
printf("Numero a inverter: ");
scanf("%d",&num);
rev = revert(num);
printf("o numero invertido e: %d", rev);
_sleep(15000);
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

comentei o codigo todo pra vc, veja se consegue entender:

#include <stdio.h> /* Inclui a biblioteca stdio.h pra poder usar funcoes como scanf() e printf() */
#include <stdlib.h> /* Inclui a biblioteca stdlib.h pra poder usar a funcao _sleep() */

/* Aqui é declarada a funcao q inverte o numero. Ela é declarada como int pra retornar o numero invertido. Recebe como parametro o numero q deve ser invertido (n) */
int revert(int n)
{
    int rever=0; //cria e zera a variavel de retorno
    int i=1; //variavel auxiliar

    /* enquanto i for menor que o numero q deve ser invertido, continuara os procedimentos */
    while(i<=n)
    {
        /* multiplica o retorno por 10. isso se deve porque o primeiro digito do numero sera isolado e somado na variavel rever. então, multiplica-se por 10 pra mover esse digito uma vez para a esquerda. vai sendo feito assim ate chegar ao ultimo digito, resultando no numero invertido. */
        rever*=10;

        /* aqui isola-se o digito. o operador % retorna o resto da divisao. por exemplo, na primeira passagem, i = 1. se n = 123, o calculo a ser feito sera (123 % (1 * 10) - 123 % 1) / 1 => (3 - 0) / 1 = 3. ou seja, isolou-se o primeiro digito. abaixo, o i é multiplicado por 10, o q na proxima passagem vai levar a se encontrar o segundo digito e assim por diante. */
        rever+=(n%(i*10)-n%i)/i;
        i*=10;
    }
return rever; //retorna o numero invertido.
}

main() //abre o programa
{
    /* uma variavel pra guardar o numero digitado e outra para o numero invertido */
    int num, rev;

    printf("Numero a inverter: "); //instrucao para o usuario
    scanf("%d",&num); //le o numero pra dentro da variavel num.
    rev = revert(num); //chama a funcao q inverte e guarda o resultado na variavel rev.
    printf("o numero invertido e: %d", rev); //escreve o resultado na tela.
    _sleep(15000); //espera acho q 15 segundos.
} //fim[/code]

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...