Ir ao conteúdo
  • Cadastre-se

C Conversão decimal para hexadecimal


Eduardo Ozelame

Posts recomendados

Olá pessoal.

Tudo bem?

 

Estou cursando uma disciplina de Algoritmos e estou com um pouco de dificuldade, poderiam me ajudar nessa questão em Linguagem C?

 

Escreva um programa que leia um número inteiro sem sinal, menor ou igual a 4095, e escreva sua representação em hexadecimal.

A obtenção da representação em hexadecimal de um número é feita através de divisões (inteira) sucessivas do número por 16.

O resto de cada divisão fornece os dígitos hexadecimais.

Na base hexadecimal, o valor 10 é representado pela letra ‘A’, o valor 11 por ‘B’, o valor 12 por ‘C’, o valor 13 por ‘D’, o valor 14 por ‘E’ e o valor 15 por ‘F’.

 

Exemplo:

685/16 = 42 resto 13             Valor Hexadecimal: D

 

42/16 = 2 resto 10                 Valor Hexadecimal: A

 

2/16 = 0 resto 2                     Valor Hexadecimal: 2

 

Assim, o número 685, seria representado como "2AD" em hexadecimal.

IMPORTANTE: A conversão de decimal para hexadecimal deve ser realizada por uma função.

 

Obrigado

Abraço colegas.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Caro usuário,

 

Seja bem-vindo ao Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@GabrielLV

Eu estava tentando fazer, achei que pelo menos teria alguma dica de caminho para seguir, um norte... Mas infelizmente nem nisso podem ajudar? Que pena.

Mas já que querem um rascunho, vou deixar o programa aqui pronto para que possa ajudar outros colegas.

 

// Inclusão de Bibliotecas
#include<stdio.h> 
#include<stdlib.h>
#include<math.h>
#include<string.h>

// Lista de Variáveis
    int  aux=0, quociente=0, num=0;
        
    
// Rotina do execução
int main()
{
    printf("Informe o numero que voce deseja converter para Hexadecimal: \n");
    scanf("%d", &num);
    
     
    int resto[ aux ];                 
    
    quociente = num / 16;
    resto[ aux ] = num % 16;                      

    while ( quociente >= 16 )
    {                         
        aux++;                   
      resto[ aux ] = quociente % 16; 
      quociente  = quociente / 16;                                                           
    }
      aux++;                    
      resto[ aux ] = quociente;

      printf ( "\nConversao de %d em Hexadecimal = ", num);
    
    for ( ; aux >= 0; aux-- ) 

    if ( resto[ aux ] >= 10 )             
    switch( resto[ aux ] )
    {
    case 10 : printf ( "A" ); break;         
    case 11 : printf ( "B" ); break;
    case 12 : printf ( "C" ); break;
    case 13 : printf ( "D" ); break;
    case 14 : printf ( "E" ); break;
    case 15 : printf ( "F" ); break;                         
    }    
    
    else                                    
    printf ( "%d", resto[ aux ] );
    
 }//FIM

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Eduardo Ozelame     seu código está funcionando bem , apenas que é comum os hexadecimais serem formados por Quatro Dígitos ,  e outra é que esse vetor resto[aux] que foi criado com zero elemento não deveria funcionar na linguagem c , pois se ele tem zero elementos então não teria onde armazenar nenhum número , e talvez funcione por que o compilador tenha alguma configuração para isso , creio que seria melhor usar um valor , por exemplo 10 , ali no lugar desse aux de dentro dos colchetes  .

   e nesse seu código não consegui fazer ele colocar os Quatro Dígitos , e para isso se o número for até 65535 ,  consegui usando esse  :

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
int main()
{
    char digitos[]={'0','1','2','3',
                    '4','5','6','7',
                    '8','9','A','B',
                    'C','D','E','F'}
                    ;
    int rem,num,k;
    char hexadecimal[10],hex[10];
    do
    {
        for(k=0; k< 10; k++)
        {
            hex[k] = '0';
            hexadecimal[k] = '0';
        }
        printf("Entre Um numbero Decimal --: ");
        scanf("%d",&num);
        printf("\nO Numbero Hexadecimal eh --: ");
        k = 0;
        while( num != 0 )
        {
            rem            = num % 16    ;
            hexadecimal[k] = digitos[rem];
            num            = num / 16    ;
            k++;
        }
        for(rem=k-1; rem>=0; rem--)
        printf("%c",hexadecimal[rem]);
        rem=3-(k-1);
        for(num=k-1; num>=0; num--)
        {
            hex[rem] = hexadecimal[num];
            rem++;
        }
        hex[rem] = '\0';
        printf("\n\nHEXADECIMAL em uma string -> %s\n",hex);
        printf("\nOutro numero S/N\n");
    }while( toupper((char)getch() ) != 'N' );
    printf("\n\n\n");
    return 128;
}

 

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...