Ir ao conteúdo

Posts recomendados

Postado

Boa noite. Criei esse programa de soma binária, ficou meio feio e repetitivo, mas vamos lá... quando digito alguns números a partir de 4 bits, ele me fornece o resultado com um ''5'' ao invés do '1 ou 0'. Ex: primeiro numero binário: 0101 segundo numero: 1010. O resultado é 5111, quando era pra ser 1111.

Ps: é só pra alguns números que isso acontece. Meio urgente, desde já agradeço! segue o codigo:

Program somabinaria; 
var  
     A,B,a1,a2,a3,b1,b2,b3,d2,d1,d3,r1,r2,r3: integer;
begin
    write('Primeiro número binário : ');
    readln(A);
    write('Segundo número binário: ');
    readln( B );
    
   a3:=A div 100;
   a2:=A mod 100 div 10 ;
   a1:= A mod 10;
   b3:=B div 100;
   b2:=B mod 100 div 10 ;
   b1:= B mod 10;
   //adição
   r1:=(a1+b1)mod 2;
   d1:=(a1+b1) div 2;
   r2:=(a2+b2+d1) mod 2;
   d2:= (a2+b2+d1) div 2;
   r3:=(a3+b3+d2) mod 2;
   d3:=(a3+b3+d2) div 2;
 
   writeln('Resultado da soma binária = ',d3,r3,r2,r1);
end.

 

 

  • Membro VIP
Postado
13 horas atrás, Nazshue disse:

   a3:=A div 100;
   a2:=A mod 100 div 10 ;
   a1:= A mod 10;
   b3:=B div 100;
   b2:=B mod 100 div 10 ;
   b1:= B mod 10;

 

Pelo que entendi, seu código só está separando 3 dígitos, logo, não deveria funcionar mesmo com 4.

Postado

@Simon Viegas Compreendi. O trabalho era pra ontem hahah, infelizmente entreguei sem ele. Mas, qual seria a melhor forma de implementar o 4 digito? Seria o máximo que eu iria precisar mesmo

  • Membro VIP
Postado
10 horas atrás, Nazshue disse:

@Simon Viegas Compreendi. O trabalho era pra ontem hahah, infelizmente entreguei sem ele. Mas, qual seria a melhor forma de implementar o 4 digito? Seria o máximo que eu iria precisar mesmo

 

1#

Seu código só está estruturado para receber 3 dígitos... Implemente a quarta variável... tente seguir a mesma lógica.

 

 

2#

Outra forma seria usando strings. Veja: uma string no Pascal é como uma array de char. Segue um exemplo:

program FCdH;
uses 
  CRT;
var
  minhaStr :string;
  i        :byte;
  num      :byte;
  code     :byte;
begin
minhaStr := '134567890';
for i := 1 to Length(minhaStr) do
  begin
  Val(minhaStr[i], num, code); //tenta converter um caractere em número
  writeln(num); //imprime o valor convertido
  end;
readln;
end.

No caso, tente entender a essência do que foi feito acima e aplicaria para o seu contexto.

  • Amei 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!