Manif 0 Denunciar post Postado Fevereiro 2, 2014 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
brhue 7 Denunciar post Postado Fevereiro 2, 2014 @@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 0 Denunciar post Postado Fevereiro 2, 2014 @@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
brhue 7 Denunciar post Postado Fevereiro 2, 2014 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
Manif 0 Denunciar post Postado Fevereiro 2, 2014 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
brhue 7 Denunciar post Postado Fevereiro 2, 2014 @@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
Manif 0 Denunciar post Postado Fevereiro 2, 2014 Obrigado pela ajuda!! Compartilhar este post Link para o post Compartilhar em outros sites