Mais um blog inútil.

Pascal-Bin-Dec

Janeiro 20, 2008

Conversor de Binário para Decimal

Arquivado em: coding, useless — amg @ 21:34

O sadik pediu-me para não postar mais, mas vou postar…

Este é um programinha que fiz o ano passado em Programação (Pascal), era para se utilizar operações com strings mas utilizei o método (010 = 0 * 2 ^ 0 + 1 * 2 ^ 1 + 0 * 2 ^ 2 = 2)
O código é estranho, até usei uns ifs que não sei porquê, mas resolveram os problemas que tinha (caso o último número fosse 0 acrescentava um valor: 010 ficava 3, 0100 ficava 5, mas já 011 ficava 3 e 0101 ficava 5):

Program bin_dec;

    function expoente(x,y:longint):longint;
        var
            z,n:longint;
    begin
        n := x;
        for z := 2 to y do
            n := n * x;
        expoente := n;
    end;

    var
        num, aux, multi, digito, valor, soma:longint;
        exp:integer;
    begin
        write('Num (bin): ');
        readln(num);
        multi := 10;
        aux := num;
        exp := 0;
        soma := 0;
        while (aux <> 0) do
        begin
            digito := aux mod 10;
            aux := aux div 10;
            multi := multi * 10;
            if (exp = 0) and (digito = 1) then
            begin
                soma := 1;
                exp := 1;
            end
            else
            begin
                valor := expoente(2,exp);
                exp := exp + 1;
                soma := soma + digito * valor;
            end;
        end;
        writeln(num,'(bin) = ',soma,'(dec)');
        readln;
    end.

Podem testar com o FPC.

EDIT: Coloquei blocos de identação para o código ficar mais bonito.