Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Manif

Conversor de bases numericas!

Recommended Posts

Ola pessoal!

Sou iniciante no mundo da programação...

estou aprendendo por conta propria lendo livros na internet, o problema é que quando eu não consigo escrever um codigo, não tem quem eu pedir ajuda, devido a este motivo, vim ate aqui!!!

Ja aprendi manipular funções,estruturas de loop, estruturas de decisão, um pouco de ponteiros, e um pouquinho de manipulação dinamica de memoria...

 

estou com dificuldade para construir um codigo para converter decimal para binario, gostaria da ajuda de vocês, não quero codigo pronto quero só ajuda na logica do programa.



:/

Compartilhar este post


Link para o post
Compartilhar em outros sites

@@Manif

 

Existem varias formas....

 

Uma delas, é ....

 

-> Dividir, sucessivamente, o numero por potencia de base 2, guardando o resto das divisoes, até obter um quociente menor do que o valor da base..

 

Exemplo:

 

-> converter 123 para a base 2

 

123 / 2

1 61 / 2

1 30/2

0 15/2

1 7/2

1 3/2

1 1 = ( Ultimo quociente)

 

1 1 0 1 1 1 -> resto das divisoes

1 1 0 1 1 1 1 -> resto das divisoes + ultimo quociente

 

A representacao sera obtida pelo valor do ultimo quociente e pelos restos obtidos, do ultimo para o primeiro. (de tras para frente)

 

123 = 1 1 1 1 0 1 1

 

brHUE

Compartilhar este post


Link para o post
Compartilhar em outros sites

@@Manif

 

Existem varias formas....

 

Uma delas, é ....

 

-> Dividir, sucessivamente, o numero por potencia de base 2, guardando o resto das divisoes, até obter um quociente menor do que o valor da base..

 

Exemplo:

 

-> converter 123 para a base 2

 

123 / 2

1 61 / 2

1 30/2

0 15/2

1 7/2

1 3/2

1 1 = ( Ultimo quociente)

 

1 1 0 1 1 1 -> resto das divisoes

1 1 0 1 1 1 1 -> resto das divisoes + ultimo quociente

 

A representacao sera obtida pelo valor do ultimo quociente e pelos restos obtidos, do ultimo para o primeiro. (de tras para frente)

 

123 = 1 1 1 1 0 1 1

 

brHUE

 

 

/Variaveis

 

char numDecimal; /Onde vai ficar o numero digitado pelo usuario

int divisor=2; /fazer as divisoes pela base 2

char resto; / vai ficar os restos

int numDividido; /vou usar para guarda o valor das divisoes

 

O loop para fazer divisoes sucessivamente seria assim?

 

while(numDecimal>=divisor)

{

numDividido=numDecimal/divisor;

resto=numDecimal%divisor;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce esta usando variaveis do tipo Char, voce poderia simplesmente usar tudo do tipo Int.

 

Voce poderia fazer assim...

 

exemplo:

 

 

....
int numero;
int i,quoc,resto;
int digito[MAXIMO];
para (quoc = numero, i =0; quoc>=2; i++) faça
{

resto = quoc % 2; // pega o resto da divisao do numero

quoc = quoc / 2; // divide por 2

digito = resto; // e guarda o resto em um vetor

}

 

//adiciona o ultimo quociente no vetor (digito)

digito = quoc;

 

....

 

brHUE

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Voce esta usando variaveis do tipo Char, voce poderia simplesmente usar tudo do tipo Int.

 

Voce poderia fazer assim...

 

exemplo:

 

 

brHUE

 

 

brHUE olha como ficou:

 

main()
{
int numero;
int i, quoc, resto;
int digito[30];
printf("Digite um numero decimal: ");
scanf("%d", &numero);
getchar();
for(quoc=numero, i=0; quoc>=2;i++)
{
resto=quoc % 2;
quoc=quoc / 2;
digito=resto;
}
digito=quoc;
}
falta terminar mas queria tirar so mais uma duvida, para encerrar o topico, quando eu chamo printf para imprimir a variavel digito (so para ver se os restos estao ficando la) aparece somente 1, que no caso é o ultimo quociente..

Compartilhar este post


Link para o post
Compartilhar em outros sites

@@Manif

 

falta terminar mas queria tirar so mais uma duvida, para encerrar o topico, quando eu chamo printf para imprimir a variavel digito (so para ver se os restos estao ficando la) aparece somente 1, que no caso é o ultimo quociente..

 

Para isso.. vc deve usar um for ... para ler todos os valores de digito[]

 

Exemplo:

 

Ler as posicoes da variavel digito[], de tras para frente...

 

 

....

 

for ( ; i >= 0; i--)

printf("%d", digito);

 

...

 

...

Lembrando que essa é uma das maneiras, para converter decimal para binaro...

...

 

brHUE

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.