Ir ao conteúdo
  • Cadastre-se

C Capicua decimal e hexa


Posts recomendados

Olá!

Estou preso nesta questão aqui: "Escreva um programa que verifique quais números entre 0 e 10000 são capicua tanto em sua notação decimal quanto na notação hexadecimal." Eu já consegui fazer em decimal mas não consigo fazer em hexadecimal.

Segue o código.

#include <stdio.h>

int inverte(int x){
   int i=0;
   do{
      i=i*10+(x%10);
      x=x/10;
      }
      while(x>0);
      return (i);
}
main(){
        int x;
        printf("Digite um numero: ");
        scanf("%d",&x);
        if(inverte(x)==x && x >= 0 && x <= 10000){
            printf("O numero %d e capicua!\n", x);
            }
        else{
            printf("O numero %d nao e capicua!\n", x);
}
}

 

Link para o comentário
Compartilhar em outros sites

É a mesma coisa:

int inverteHex(int x){
    int i=0;
    do{
        i=i * 0x10 + (x % 0x10);
        x=x / 0x10;
    } while(x>0);
    return (i);
}

Só muda 10 para 0x10 (=16 em decimal).

 

Poderia fazer assim também:

int inverteHex(int x){
    int i=0;
    do{
        i=i * 16 + (x % 16);
        x=x / 16;
    } while(x>0);
    return (i);
}

Mas o primeiro representa melhor que está trabalhando com hexadecimais.

 

E não deve solicitar para o usuário digitar um número, o enunciado está pedindo para testar todos os números entre 0 e 10000 e achar todos que sejam capicua tanto em decimal quanto em hexadecimal (e imprimir todos eles nos 2 formatos).

Link para o comentário
Compartilhar em outros sites

Em 30/04/2020 às 20:54, isrnick disse:

É a mesma coisa:


int inverteHex(int x){
    int i=0;
    do{
        i=i * 0x10 + (x % 0x10);
        x=x / 0x10;
    } while(x>0);
    return (i);
}

Só muda 10 para 0x10 (=16 em decimal).

 

Poderia fazer assim também:


int inverteHex(int x){
    int i=0;
    do{
        i=i * 16 + (x % 16);
        x=x / 16;
    } while(x>0);
    return (i);
}

Mas o primeiro representa melhor que está trabalhando com hexadecimais.

 

E não deve solicitar para o usuário digitar um número, o enunciado está pedindo para testar todos os números entre 0 e 10000 e achar todos que sejam capicua tanto em decimal quanto em hexadecimal (e imprimir todos eles nos 2 formatos).

Funcionou!

Muito obrigado!

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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!