Ir para conteúdo
Fórum Script Brasil
  • 0

Soma De Números Binários


Guest Josy

Pergunta

Gente to aprendendo C agora, e tenho um script que faz essa soma em Pascal, mas preciso fazer essa soma em C e não to conseguindo... Agradeço se alguém me der uma mao

PASCAL -->

Program soma_binarios;

Uses WinCrt;

Var

bin1, resposta,bin2, result, result_final: string [20] ;

n1, n2, i,alg1, alg2, somabin, vai, vem, cont, erro: integer;

Begin

repeat

clrscr;

Writeln ('+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

Writeln (' Programa para somar números Binários!!!!!');

Writeln ('+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

writeln;

result_final:=''; {zero esta variável, pois quando o loop é feito a resposta anterior fica armazenada e é repetida}

result:= '';

Write (' Digite o 1º número: ');

readln (n1);

str (n1, bin1);

for i:=1 to length(bin1) do {este for foi criador para tratar o erro quando o usuário digitar um número não binário}

if ( bin1 <> '0' ) and ( bin1 <>'1') then

begin

clrscr;

Writeln ('++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

Writeln (' Programa para somar números Binários!!!!!');

Writeln ('++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

writeln;

writeln (' Lembrete: Números binários são compostos por zeros e uns!!!!');

write (' Redigite o número: ');

readln(n1);

str (n1, bin1); {transforma a variável numérica em uma string}

end;

write (' Digite o 2º Número:+ ');

readln (n2);

str (n2, bin2);

for i:=1 to length(bin2) do {este for também foi criador para tratar o erro quando o usuário digitar um número não binário}

if ( bin2 <> '0' ) and ( bin2 <>'1') then

begin

clrscr;

Writeln ('++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

Writeln (' Programa para somar números Binários!!!!!');

Writeln ('++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

writeln;

writeln (' Digite o 1º número: ',n1);

writeln (' Lembrete: Números binários são compostos por zeros e uns!!!!');

write (' Redigite o numero: ');

readln(n2);

str (n2, bin2); {transforma a variável numérica em uma string}

end;

if length(bin1) > length (bin2) then {outro problema que poderia ocorrer é um número digitado ser maior que o outro}

repeat {portanto foi criado esse tratamento para colocar zeros quando não hover número}

bin2:= '0' + bin2; {digitado pelo usuário do programa fazendo com que eles tenham o mesmo tamanho.}

until length(bin1) = length (bin2)

else

if length(bin1) < length(bin2) then

repeat

bin1:= '0' + bin1;

until length(bin1) = length(bin2);

vem:=0;

cont:= length(bin1);

while cont >= 1 do

begin

val(bin1[cont], alg1, erro); {essa funcção (val) transforma uma string em um número inteiro, somente em inteiro}

val(bin2[cont], alg2, erro);

if (vem = 0) and (alg1 = 0) and (alg2 = 0) then {agora vem as condições que efetuam os testes das somas dos números}

begin {se vai1,vem1, se é zero ou um, etc.}

vai := 0;

somabin := 0;

end

else

if ((vem = 0) and (alg1 = 1) and (alg2 = 0)) or

((vem = 0) and (alg1 = 0) and (alg2 = 1)) then

begin

vai := 0;

somabin := 1;

end

else

if ((vem = 0) and (alg1 = 1) and (alg2 = 1)) then

begin

vai := 1;

somabin := 0;

end

else

if (vem = 1) and (alg1 = 0) and (alg2 = 0) then

begin

vai := 0;

somabin := 1;

end

else

if ((vem = 1) and (alg1 = 1) and (alg2 = 0)) or

((vem = 1) and (alg1 = 0) and (alg2 = 1)) then

begin

vai := 1;

somabin := 0;

end

else

if (vem = 1) and (alg1 = 1) and (alg2 = 1) then

begin

vai := 1;

somabin := 1;

end;

str(somabin, result); {transforma o resulta em uma string para que possa ser invertido}

result_final := result + result_final; {o número invertido é acumulado em result_final}

vem := vai;

cont:= cont - 1; {contador que para o estrutura de repetição}

end;

if vem = 1 then

result_final := '1' + result_final; {trratamento de erro}

writeln (' ---------------------------');

writeln (' O total da soma é: ', result_final);

writeln;

writeln ('+++++++++++++++++++++++++++++++++++++++++');

writeln (' Quando desejar sair aperte a tecla ESC.');

writeln ('+++++++++++++++++++++++++++++++++++++++++');

resposta:=readkey;

until resposta = #27; {condição para sair do programa}

End.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Se está a aprender C de que está a espera.

Não vejo melhor maneira para começar, não esteja a espera que os outros façam o trabralho por si.

Caso é isso que você queira, não aprenda C recomendo-lhe, salte para visual basic.

Link para o comentário
Compartilhar em outros sites

  • 0

Porque a soma tem que ser feita em binário? Você pode apenas converter os números para um decimal e então realizar a soma em decimal. Seria mais simples!

Para exibir em binário utilize a função abaixo:

void ExibeBinario(unsigned long numero)
{
   int shift=1;

   printf("Binario de %ld: ");

   while(numero>>shift)
      shift++;

   while(shift-->0)
      printf("%c", (numero>>shift)&1 ? '1' : '0');

   printf("\n");
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...