Ripper 0 Denunciar post Postado Março 21, 2010 Bom pessoal preciso de ajuda. Tenho que fazer um programa que converta decimal em BCD. Tenho isso: #include<stdio.h> #include<stdlib.h> #include<conio.h> int main() { int i; int num; char binario [33]; binario [0]=0; printf("Digite o numero que deseja converter para BCD:"); scanf("%d",&num); itoa (num,binario,2); printf ("O numero convertido em binario e: %s\n",binario); getch(); return 0; } O que eu tenho converte decimal em binario, mas o que eu tenho que fazer é: BCD 0 - 0000 6 - 0110 1 - 0001 7 - 0111 2 - 0010 8 - 1000 3 - 0011 9 - 1001 4 - 0100 5 - 0101 Se o numero for até 9 o que ja esta feito faz mas com um problema eu não consigo colocar o zero na frente. Se o numero for maior que 9, tenho que fazer isso: Ex: 290 -> 2 - 0010 9 - 1001 0 - 0000 -> 290 em BCD é : 001010010000, ou seja o programa tem que ler o numero e concatenar as partes dele. Alguém tem alguma ideia? Agradeço desde já. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 23, 2010 #include <stdio.h> #include <string.h> #include <stdlib.h> char bin[4]; void dec2bin(char); int main() { char * numero = "75912"; unsigned int i; for(i=0;i<strlen(numero);i++) { dec2bin(numero[i]); printf("%s ", bin); } puts(""); return 0; } void dec2bin(char numero) { int i; unsigned long dividendo, quoc, resto; memset(&bin, '0', 4); dividendo = strtol(&numero, NULL, 10); for(i=3; i >= 0 && quoc != 0; i--) { quoc = dividendo / 2; resto = dividendo % 2; if (resto == 1) { bin[i] = '1'; } dividendo = quoc; } } Se você tentar usar uma variável local, ou você tem lixo ou falha de segmentação. Compartilhar este post Link para o post Compartilhar em outros sites
Ripper 0 Denunciar post Postado Março 23, 2010 Valeu Isis. Também achei isso na internet, só que eu dei uma "enxugada" no código: #include<stdio.h> #include<stdlib.h> #include<conio.h> int c[18],bcd[20]; //Função de conversão de decimal para binário void conv_d2b ( unsigned long x,int *c) { int i; for(i=0;i<18;i++) *(c++)=(x>>i)&0x1; } //Função de conversão de decimal para BCD void conv_d2bcd (unsigned long int x, int *bcd) { int m,l,b,cc,i; unsigned long int dbcd; m=x/10000; l=(x%10000)/1000; b=(x%1000)/100; cc=(x%100)/10; dbcd=((((((((m*1157<<1)+l*129)<<1)+b*13)<<1)+cc)*3)<<1) + x; for(i=0;i<20;i++) *(bcd++)=(dbcd>>i)&0x1; } int main(){ int k; unsigned long int j,x; printf("Digite o numero que deseja converter :"); scanf("%lu",&x); printf("\n\n BCD\t Decimal\t Binario\n"); conv_d2bcd(x,bcd); for(k=19;k>=0;k--) printf("%d", bcd[k]); printf(" %lu\t ", x); conv_d2b(x,c); for(k=17;k>=0;k--) printf("%d",c[k]); printf("\n\n\r"); getch(); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Março 29, 2010 Cuidado com esses códigos pegados da net, pois alguns são antigos e possuem a <conio.h> e alguns comandos feios para segurar a tela kk ;D []s Compartilhar este post Link para o post Compartilhar em outros sites