Ir ao conteúdo
  • Cadastre-se

Carla Maria

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

3
  1. @devair1010 os números negativos também devem ser considerados nesse programa!
  2. Olá pessoal tudo bem? Pois bem eu estou com um problema nessa atividade: receber dois números decimais(considerar números negativos), convertê-los para binário e fazer a soma binária dos números convertidos. O meu código está dando erro na parte dos números negativos. Quem puder me ajudar eu agradeço! #include <stdio.h> #define bits 15 int main (){ int valor1, /*armazena o primeiro número decimal informado pelo usuário */ valor2, /*armazena o segundo número decimal informado pelo usuário*/ vetvalor1[bits], /*armazena o primeiro número convertido para binário*/ vetvalor2[bits], /*armazena o segundo número convertido para binário*/ np[15], i,k,t, /*contadores*/ vaium=0, /*armazena o vai um da soma dos binários*/ soma[bits]; /*armazena a soma dos binários*/ printf(" Conversão de Valores - Decimal x Binário "); printf("\n ***************************************************** \n"); np[15]=1; printf("\n Informe o primeiro número:"); scanf("%d", &valor1); /* Transformando o primeiro número em binário */ if (valor1>0){ /*Verificando se o número é positivo ou negativo*/ for (i=bits; i >= 0; i--){ if (valor1 % 2 == 0) vetvalor1[i] = 0; else vetvalor1[i]=1; valor1=valor1 / 2; } /* for */ } /*if (valor1>0)*/ else{ /*Se o número for negativo*/ for (i=bits; i >= 0; i--){ if (valor1%2==0) vetvalor1[i]=1; else vetvalor1[i]=0; valor1=valor1 / 2; vetvalor1[i]=vetvalor1[i]+np[15]+vaium; if(vetvalor1[i]==3 || vetvalor1[i]==1)t=1;else t=0; if((vetvalor1[i]==2)){ vetvalor1[i]=0; vaium=1; } else if(vetvalor1[i]==3){ vetvalor1[i]=1; vaium=1; } else vaium=0; } } printf("\n O primeiro número convertido para binário é: "); for (i=0; i <= bits; i++) printf("%d",vetvalor1[i]); printf(" "); printf("\n Informe o segundo número:"); scanf("%d", &valor2); /* Transformando o segundo número em binário */ if (valor2>0){ /*Verificando se o número é positivo ou negativo*/ for (i=bits; i >= 0; i--){ if (valor2 % 2 == 0) vetvalor2[i] = 0; else vetvalor2[i]=1; valor2=valor2 / 2; } /* for */ } /*if (valor1>0)*/ else{ /*Se o número for negativo*/ for (i=bits; i >= 0; i--){ if (valor2 % 2 == 0) vetvalor2[i]=1; else vetvalor2[i]=0; valor2=valor2 / 2; vetvalor2[i]=vetvalor2[i]+np[15]+vaium; if(vetvalor2[i]==3 || vetvalor2[i]==1)t=1;else t=0; if((vetvalor2[i]==2)){ vetvalor2[i]=0; vaium=1; } else if(vetvalor2[i]==3){ vetvalor2[i]=1; vaium=1; } else vaium=0; } } printf("\n O segundo número convertido para binário é: "); for (i=0; i <= bits; i++) printf("%d",vetvalor2[i]); for (i=bits; i>=0; i--){ soma[i]=vetvalor1[i]+vetvalor2[i]+vaium; if(soma[i]==3 || soma[i]==1)t=1;else t=0; if((soma[i]==2)){ soma[i]=0; vaium=1; } else if(soma[i]==3){ soma[i]=1; vaium=1; } else vaium=0; } /*for*/ printf("\n A soma é:"); for (i=0; i<=bits; i++) printf("%d",soma[i]); return 0; }

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