Pascal/Turbo Pascal - Binario a Decimal

   
Vista:

Binario a Decimal

Publicado por Gerardo (1 intervención) el 23/08/2011 16:43:10
Hola Amigos:

soy estudiante de informatica y necesito hacer un programa para convertir de binario a decimal, de decimal a binario, a complemento unitario y a complemento doble. porfavor alguien que me ayude, ya tengo casi todo resuelto solo me falta de binario a decimal me manda un error.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Binario a Decimal

Publicado por ramon (2072 intervenciones) el 02/09/2011 20:16:57
{Esto te encaminara un poquito}

program binhexa;
uses
crt;
const
valores : array[1..4] of integer = (8,4,2,1);
var
tecla : char;
cont : integer;

function datobite : string; {entrada numero binario un byte 8 bits}
var
da, dato : string[8];
i, nu : integer;
begin
cont := 1;
fillchar(dato,9,' ');
dato[0] := chr(8);
gotoxy(10,4);write('Entre N§ Binario 8 bits = 1 Byte');
gotoxy(18,5);
repeat
tecla := readkey;
if tecla in[#48,#49] then
begin
dato[cont] := tecla;
dato[0] := chr(cont);
gotoxy(19 - cont,5);write(dato[cont]);
cont := cont + 1;
gotoxy(19 - cont,5);
end;
if tecla = #8 then
begin
cont := cont - 1;
if cont < 1 then
cont := 1;
dato[cont] := ' ';
dato[0] := chr(cont);
gotoxy(19 - cont,5);write(dato[cont]);
end;
until (tecla = #13) or (cont > 8);
if length(dato) < 8 then
begin
for nu := 1 to 8 - length(dato) + 1 do
begin
dato := dato + '0';
end;
end;
i := 1;
for nu := 8 downto 1 do
begin
da[i] := dato[nu];
da[0] := chr(i);
i := i + 1;
end;
datobite := da;
gotoxy(11,5);clreol;
end;

procedure presenta_hexa(d : string); {presentacion binario hexadecimal}
var
valor1, valor2, z1, z2 : integer;
da1, da2 : string[4];
letra1, letra2 : char;
begin
valor1 := 0;
z2 := 1;
for z1 := 1 to length(d) div 2 do
begin
da2[z2] := d[z1];
da2[0] := chr(z2);
z2 := z2 + 1;
end;
z2 := 1;
for z1 := (length(d) div 2) + 1 to length(d) do
begin
da1[z2] := d[z1];
da1[0] := chr(z2);
z2 := z2 + 1;
end;
valor1 := 0;
valor2 := 0;
for z1 := 1 to 4 do
begin
if da1[z1] = '1' then
valor1 := valor1 + valores[z1];
if da2[z1] = '1' then
valor2 := valor2 + valores[z1];
end;
if valor2 > 9 then
begin
case valor2 of
10 : letra2 := 'A';
11 : letra2 := 'B';
12 : letra2 := 'C';
13 : letra2 := 'D';
14 : letra2 := 'E';
15 : letra2 := 'F';
end;
end
else
begin
letra2 := chr(48 + valor2);
end;
if valor1 > 9 then
begin
case valor1 of
10 : letra1 := 'A';
11 : letra1 := 'B';
12 : letra1 := 'C';
13 : letra1 := 'D';
14 : letra1 := 'E';
15 : letra1 := 'F';
end;
end
else
begin
letra1 := chr(48 + valor1);
end;
clrscr;
writeln;
writeln(' ','En Binario Es : ',da2,da1);
writeln;
writeln(' ','En Hexadecimal Es : ',letra2,letra1);
end;

begin
clrscr;
presenta_hexa(datobite);
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Binario a Decimal

Publicado por ramon (2072 intervenciones) el 17/09/2011 14:07:37
{Perdona antes me equivoque}

program bina_deci;
uses
crt;
type
string11 = string[11];

const
balores_bite : array[0..11] of integer = (
1,2,4,8,16,32,64,128,256,512,1024,2048);

var
cadena : string11;
num : integer;


function binario_decimal(bina : string11) : integer;
{Ejemplo : bina = '10010011001'}
var
dato, i : integer;
begin
binario_decimal := 0;
dato := 0;
for i := 0 to length(bina) - 1 do
begin
if bina[length(bina) - i] = '1' then
dato := dato + balores_bite[i];
end;
binario_decimal := dato;
end;

function decimal_binario(deci : integer) : string11;
{Ejemplo deci = 24}
var
dato : string11;
i, resu, dib : integer;
resto : integer;
ca : string[1];
begin
dib := deci;
i := 1;
repeat
fillchar(ca,2,' ');
ca[0] := chr(1);
resu := dib div 2;
resto := dib mod 2;
dib := resu;
resu := 0;
str(resto,ca);
dato[i] := ca[1];
dato[0] := chr(i);
i := i + 1;
resto := 0;
until dib = 0;
if length(dato) < 11 then
for i := 1 to (11 - length(dato)) do
begin
insert('0',dato,1);
end;
decimal_binario := dato;
end;



begin
clrscr;
textcolor(15);
cadena := '00000011001';
writeln('Numero Entrado = ',cadena);
writeln('Resultado = ',binario_decimal(cadena),' Decimal');
writeln;
num := 27;
writeln('Numero Entrado = ',num);
writeln('Resultado = ',decimal_binario(num),' Binario');
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar