Ir ao conteúdo
  • Cadastre-se

edu.po

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

1
  1. Bom, sou novo em c e meu professor passou a tarefa de fazer um programa que converte de decimal, hexa, octa ou binário para qualquer outra das mesmas e ainda com vírgula, e ainda usando as mesmas formulas que faz com lápis e papel, depois de muita peleja cheguei este código. Queria saber se ficou bom, muito grande, com bug etc. #include<stdio.h> #include<locale.h> #include<string.h> #include<math.h> float virgula=0, bekapvirgula; int escolha, bekapdec, contar, numdec=0, base, tamanho, virgulacontrole, tamanho2, tamanhobekap; int vetordec[100]={0}; char bistring[100]; char bitobistring[100]; int main(){ setlocale(LC_ALL, "portuguese"); printf("QUAL A BASE DO NÚMERO QUE VOCÊ VAI DIGITAR?\n1 - DECIMAL\n2 - BINARIO\n3 - OCTAL\n4 - HEXADECIMAL\n"); scanf("%d", &escolha); switch(escolha){ case 1: printf("DIGITE SEU NÚMERO EM DECIMAL PARA CONVERTER PARA TODAS AS BASES: "); scanf("%f", &virgula); numdec=virgula; virgula=virgula-numdec; base=2; decimal_para_qualquer_base(); deci_com_virgula_pra_q_base(); printf(" EM BINÁRIO\n"); base=8; decimal_para_qualquer_base(); deci_com_virgula_pra_q_base(); printf(" EM OCTAL\n"); base=16; decimal_para_qualquer_base(); deci_com_virgula_pra_q_base(); printf(" EM HEXADECIMAL\n"); break; case 2: printf("DIGITE SEU NÚMERO EM BINÁRIO PARA CONVERTER PARA QUALQUER BASE: "); scanf("%s", bistring); base=2; qualquer_base_pra_decimal(); vir_bi_pra_vir_dec(); printf("%.2f EM DECIMAL\n", numdec+virgula); base=8; decimal_para_qualquer_base(); deci_com_virgula_pra_q_base(); printf(" EM OCTAL\n"); base=16; decimal_para_qualquer_base(); deci_com_virgula_pra_q_base(); printf(" EM HEXADECIMAL\n"); break; case 3: printf("DIGITE UM NÚMERO EM OCTAL PARA CONVERTER PARA QUALQUER BASE: "); scanf("%s", bistring); base=8; qualquer_base_pra_decimal(); vir_octa_pra_vir_dec(); printf("%f EM DECIMAL\n", numdec+virgula); base=2; decimal_para_qualquer_base(); deci_com_virgula_pra_q_base(); printf(" EM BINÁRIO\n"); base=16; decimal_para_qualquer_base(); deci_com_virgula_pra_q_base(); printf(" HEXADECIMAL\n"); break; case 4: printf("DIGITE UM NÚMERO EM HEXADECIMAL PARA CONVERTER PARA QUALQUER BASE: "); scanf("%s", bistring); base=16; qualquer_base_pra_decimal(); vir_hex_pra_vir_dec(); printf("%f EM DECIMAL\n", numdec+virgula); base=2; decimal_para_qualquer_base(); deci_com_virgula_pra_q_base(); printf(" EM BINÁRIO\n"); base=8; decimal_para_qualquer_base(); deci_com_virgula_pra_q_base(); printf(" EM OCTAL\n"); break; default: printf("VOCÊ NÃO ESCOLHEU UMA CASA VÁLIDA\n"); } system("pause"); return 0; } void decimal_para_qualquer_base(void){ bekapdec=numdec; contar=0; while(bekapdec > 0){ vetordec[contar]=bekapdec % base; bekapdec=bekapdec/base; ++contar; } for(; contar > 0; --contar){ switch(vetordec[contar-1]){ 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; default: printf("%d", vetordec[contar-1]); } } } void qualquer_base_pra_decimal(void){ for(tamanho=0;tamanho<100;++tamanho){ if(bistring[tamanho]==','||bistring[tamanho]=='.'){ break; } } if(tamanho<100){ tamanho=tamanho-1; }else{ tamanho = strlen(bistring)-1; } contar=0; for(;tamanho>-1;--tamanho){ if(bistring[contar]=='1'){ numdec=numdec+(1*pow(base,tamanho)); }else if(bistring[contar]=='2'){ numdec=numdec+(2*pow(base,tamanho)); }else if(bistring[contar]=='3'){ numdec=numdec+(3*pow(base,tamanho)); }else if(bistring[contar]=='4'){ numdec=numdec+(4*pow(base,tamanho)); }else if(bistring[contar]=='5'){ numdec=numdec+(5*pow(base,tamanho)); }else if(bistring[contar]=='6'){ numdec=numdec+(6*pow(base,tamanho)); }else if(bistring[contar]=='7'){ numdec=numdec+(7*pow(base,tamanho)); }else if(bistring[contar]=='8'){ numdec=numdec+(8*pow(base,tamanho)); }else if(bistring[contar]=='9'){ numdec=numdec+(9*pow(base,tamanho)); }else if(bistring[contar]=='A'||bistring[contar]=='a'){ numdec=numdec+(10*pow(base,tamanho)); }else if(bistring[contar]=='B'||bistring[contar]=='b'){ numdec=numdec+(11*pow(base,tamanho)); }else if(bistring[contar]=='C'||bistring[contar]=='c'){ numdec=numdec+(12*pow(base,tamanho)); }else if(bistring[contar]=='D'||bistring[contar]=='d'){ numdec=numdec+(13*pow(base,tamanho)); }else if(bistring[contar]=='E'||bistring[contar]=='e'){ numdec=numdec+(14*pow(base,tamanho)); }else if(bistring[contar]=='F'||bistring[contar]=='f'){ numdec=numdec+(15*pow(base,tamanho)); } ++contar; } } void deci_com_virgula_pra_q_base(void){ contar=0; bekapvirgula=virgula; //previnir depois de não aparecer esta virgula "estética" if(bekapvirgula!=0){ printf(","); } while(bekapvirgula != 0){ bekapvirgula=bekapvirgula*base; virgulacontrole=bekapvirgula; bekapvirgula=bekapvirgula-virgulacontrole; switch(virgulacontrole){ 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; default: printf("%d", virgulacontrole); } ++contar; } } void vir_bi_pra_vir_dec(void){ for(tamanho=0;tamanho<100;++tamanho){ if(bistring[tamanho]==','||bistring[tamanho]=='.'){ break; } } if(tamanho < 100){ virgula=0; tamanho=tamanho+1;//onde vai começar tamanho2 = (strlen(bistring)-1);//onde vai terminar for(contar=-1;tamanho<=tamanho2;++tamanho){ if(bistring[tamanho]=='1'){ virgula=virgula+pow(2,contar); } --contar; } } } void vir_hex_pra_vir_dec(void){ //virgula hex para virgula binario for(tamanho=0;tamanho<100;++tamanho){ if(bistring[tamanho]==','||bistring[tamanho]=='.'){ break; } } if(tamanho < 100){ virgula=0; contar=0; tamanho=tamanho+1;//onde vai começar tamanho2 = (strlen(bistring)-1);//onde vai terminar for(;tamanho<=tamanho2;++tamanho){ if(bistring[tamanho]=='0'){ bitobistring[contar]='0'; bitobistring[contar+1]='0'; bitobistring[contar+2]='0'; bitobistring[contar+3]='0'; }else if(bistring[tamanho]=='1'){ bitobistring[contar]='0';//8 bitobistring[contar+1]='0';//4 bitobistring[contar+2]='0';//2 bitobistring[contar+3]='1';//1 }else if(bistring[tamanho]=='2'){ bitobistring[contar]='0';//8 bitobistring[contar+1]='0';//4 bitobistring[contar+2]='1';//2 bitobistring[contar+3]='0';//1 }else if(bistring[tamanho]=='3'){ bitobistring[contar]='0';//8 bitobistring[contar+1]='0';//4 bitobistring[contar+2]='1';//2 bitobistring[contar+3]='1';//1 }else if(bistring[tamanho]=='4'){ bitobistring[contar]='0';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='0';//2 bitobistring[contar+3]='0';//1 }else if(bistring[tamanho]=='5'){ bitobistring[contar]='0';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='0';//2 bitobistring[contar+3]='1';//1 }else if(bistring[tamanho]=='6'){ bitobistring[contar]='0';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='1';//2 bitobistring[contar+3]='0';//1 }else if(bistring[tamanho]=='7'){ bitobistring[contar]='0';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='1';//2 bitobistring[contar+3]='1';//1 }else if(bistring[tamanho]=='8'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='0';//4 bitobistring[contar+2]='0';//2 bitobistring[contar+3]='0';//1 }else if(bistring[tamanho]=='9'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='0';//4 bitobistring[contar+2]='0';//2 bitobistring[contar+3]='1';//1 }else if(bistring[tamanho]=='A'||bistring[tamanho]=='a'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='0';//4 bitobistring[contar+2]='1';//2 bitobistring[contar+3]='0';//1 }else if(bistring[tamanho]=='B'||bistring[tamanho]=='b'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='0';//4 bitobistring[contar+2]='1';//2 bitobistring[contar+3]='1';//1 }else if(bistring[tamanho]=='C'||bistring[tamanho]=='c'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='0';//2 bitobistring[contar+3]='0';//1 }else if(bistring[tamanho]=='D'||bistring[tamanho]=='d'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='0';//2 bitobistring[contar+3]='1';//1 }else if(bistring[tamanho]=='E'||bistring[tamanho]=='e'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='1';//2 bitobistring[contar+3]='0';//1 }else if(bistring[tamanho]=='F'||bistring[tamanho]=='f'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='1';//2 bitobistring[contar+3]='1';//1 } contar=contar+4; } tamanho=0; tamanho2=(strlen(bitobistring)-1); for(contar=-1;tamanho<=tamanho2;++tamanho){ if(bitobistring[tamanho]=='1'){ virgula=virgula+pow(2,contar); } --contar; } } } void vir_octa_pra_vir_dec(void){ for(tamanho=0;tamanho<100;++tamanho){ if(bistring[tamanho]==','||bistring[tamanho]=='.'){ break; } } if(tamanho < 100){ virgula=0; contar=0; tamanho=tamanho+1;//onde vai começar tamanho2 = (strlen(bistring)-1);//onde vai terminar for(;tamanho<=tamanho2;++tamanho){ if(bistring[tamanho]=='0'){ bitobistring[contar]='0'; bitobistring[contar+1]='0'; bitobistring[contar+2]='0'; }else if(bistring[tamanho]=='1'){ bitobistring[contar]='0';//4 bitobistring[contar+1]='0';//2 bitobistring[contar+2]='1';//1 }else if(bistring[tamanho]=='2'){ bitobistring[contar]='0';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='0';//2 }else if(bistring[tamanho]=='3'){ bitobistring[contar]='0';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='1';//2 }else if(bistring[tamanho]=='4'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='0';//4 bitobistring[contar+2]='0';//2 }else if(bistring[tamanho]=='5'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='0';//4 bitobistring[contar+2]='1';//2 }else if(bistring[tamanho]=='6'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='0';//2 }else if(bistring[tamanho]=='7'){ bitobistring[contar]='1';//8 bitobistring[contar+1]='1';//4 bitobistring[contar+2]='1';//2 } contar=contar+3; } tamanho=0; tamanho2=(strlen(bitobistring)-1); for(contar=-1;tamanho<=tamanho2;++tamanho){ if(bitobistring[tamanho]=='1'){ virgula=virgula+pow(2,contar); } --contar; } } }

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!