Ir ao conteúdo
  • Cadastre-se
Andrey Felipe

Ajuda em C

Recommended Posts

Ola gente preciso de ajuda para um programa em C que receba um numero de 4 digitos e o devolva por extenso, também convertendo ele para binario, hexadecimal e octal e voltando para decimal depois se puderem me ajudar agradeço =)

 

 

 

bases de (2 a 10)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passar um numero pra extenso:

1 - Divide o número em casas decimais

2 - Depois use alguma estrutura de repetição que recebe as casas decimais e imprime de acordo.

Pra dividir o número em casas decimais:

numero = 1234;

((numero % 10000) - (numero % 1000)) / 1000 = 1

((numero % 1000) - (numero % 100)) / 100 = 2

((numero % 100) - (numero % 10)) / 10 = 3

((numero % 10) - (numero % 1)) / 1 = 4

Passar um numero de decimal pra binario:

1 - Divide ele por 2 sucessivamente até o resto ser 0 ou 1.

2 - A cada divisão, você adiciona o resto num array que vai representar o numero em binário (precisa adicionar no array da direita pra esquerda)

numero = 1234;

1234 % 2 = [0]

numero = 1234 / 2;

617 % 2 = [1]

numero = 617 / 2;

308 % 2 = [0]

numero = 308 / 2;

154 % 2 = [0]

numero = 154 / 2;

77 % 2 = [1]

numero = 77 / 2;

38 % 2 = [0]

numero = 38 / 2;

19 % 2 = [1]

numero = 19 / 2;

9 % 2 = [1]

numero = 9 / 2;

4 % 2 = [0]

numero = 4 / 2;

2 % 2 = [0]

numero = 2 / 2;

[1]

[0100 1101 0010]

Passar o número de decimal pra hexa e octal:

1 - Considerando que você já converteu eles pra binário, essa parte é a mais fácil.

Pra hexadecimal, basta percorrer o teu array, dividir os bits em grupos de 4, e converter eles de volta pra decimal.

numero = 1234;

binario[] = { 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0 };

Usando os 4 ultimos números, da direita pra esquerda:

2^0 x binario[11] = 0

+ 2^1 x binario[10] = 2

+ 2^2 x binario[9] = 0

+ 2^3 x binario[8] = 0

O resultado dá 2. Em hexa 2 é [2] mesmo.

Os próximos 4 números:

2^0 x binario[7] = 1

+ 2^1 x binario[6] = 0

+ 2^2 x binario[5] = 4

+ 2^3 x binario[4] = 8

O resultado dá 13. Em hexa é [D].

Os próximos 4 números:

2^0 x binario[3] = 0

+ 2^1 x binario[2] = 0

+ 2^2 x binario[1] = 4

+ 2^3 x binario[0] = 0

O resultado é 4. Em hexa é [4] mesmo.

Juntando tudo: [4D2], que é o mesmo que 1234 em hexa.

Pra octal é a mesma lógica, mas em vez de separar os bits em grupos de 4, separa em grupos de 3.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passar um numero pra extenso:

1 - Divide o número em casas decimais

2 - Depois use alguma estrutura de repetição que recebe as casas decimais e imprime de acordo.

Pra dividir o número em casas decimais:

numero = 1234;

((numero % 10000) - (numero % 1000)) / 1000 = 1

((numero % 1000) - (numero % 100)) / 100 = 2

((numero % 100) - (numero % 10)) / 10 = 3

((numero % 10) - (numero % 1)) / 1 = 4

Passar um numero de decimal pra binario:

1 - Divide ele por 2 sucessivamente até o resto ser 0 ou 1.

2 - A cada divisão, você adiciona o resto num array que vai representar o numero em binário (precisa adicionar no array da direita pra esquerda)

numero = 1234;

1234 % 2 = [0]

numero = 1234 / 2;

617 % 2 = [1]

numero = 617 / 2;

308 % 2 = [0]

numero = 308 / 2;

154 % 2 = [0]

numero = 154 / 2;

77 % 2 = [1]

numero = 77 / 2;

38 % 2 = [0]

numero = 38 / 2;

19 % 2 = [1]

numero = 19 / 2;

9 % 2 = [1]

numero = 9 / 2;

4 % 2 = [0]

numero = 4 / 2;

2 % 2 = [0]

numero = 2 / 2;

[1]

[0100 1101 0010]

Passar o número de decimal pra hexa e octal:

1 - Considerando que você já converteu eles pra binário, essa parte é a mais fácil.

Pra hexadecimal, basta percorrer o teu array, dividir os bits em grupos de 4, e converter eles de volta pra decimal.

numero = 1234;

binario[] = { 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0 };

Usando os 4 ultimos números, da direita pra esquerda:

2^0 x binario[11] = 0

+ 2^1 x binario[10] = 2

+ 2^2 x binario[9] = 0

+ 2^3 x binario[8] = 0

O resultado dá 2. Em hexa 2 é [2] mesmo.

Os próximos 4 números:

2^0 x binario[7] = 1

+ 2^1 x binario[6] = 0

+ 2^2 x binario[5] = 4

+ 2^3 x binario[4] = 8

O resultado dá 13. Em hexa é [D].

Os próximos 4 números:

2^0 x binario[3] = 0

+ 2^1 x binario[2] = 0

+ 2^2 x binario[1] = 4

+ 2^3 x binario[0] = 0

O resultado é 4. Em hexa é [4] mesmo.

Juntando tudo: [4D2], que é o mesmo que 1234 em hexa.

Pra octal é a mesma lógica, mas em vez de separar os bits em grupos de 4, separa em grupos de 3.

Obrigado pela ajuda amigo xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×