Pascal/Turbo Pascal - conversion decimal-binario

 
Vista:

conversion decimal-binario

Publicado por francisco (3 intervenciones) el 24/03/2003 14:11:39
necesito ayuda para hacer un programa que convierta un numero de decimal a binario y viceversa
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

RE:conversion decimal-binario

Publicado por miguel (46 intervenciones) el 24/03/2003 17:42:25
Tu problema es fácil de solucionar. Se puede hacer recursivo o iterativo. Si es recursivo trata de dividir por dos, y quedanse con el resto y el cociente pasa a una nueva división. ejemplo

procedure divide2(numero:integer; var result:integer);
begin
if numero<>0 then
begin
result:=result*10
result:=result + (numero mod 2);
divide2 (numero div 2,resul);
end;
end;

No le probado, pero supongo que funciona, si no responde. El procedimiento contrario lo dejo en tus manos. SUERTE

Para lo que necesites, ahí estoy
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

Que mal... eso esta mal...

Publicado por Eduardo (2 intervenciones) el 26/03/2003 17:26:28
Miguel... donde un procedimiento posee result... CARAMBA... vas a confundir mas a la gente...

Bueno si tienen problemas con el algoritmo yo se los paso, me escriben a mi correo..
chau...
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

RE:Que mal... eso esta mal...

Publicado por Diego Romero (786 intervenciones) el 27/03/2003 02:50:39
Amigo Eduardo este procedimiento TIENE result

procedure divide2(numero:integer; VAR RESULT:integer);

No entiendo a qué apunta tu comentario.
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

RE:Que mal... eso esta mal...

Publicado por miguel (46 intervenciones) el 28/03/2003 21:15:50
Un procedimiento puede tener un resultado. Si lo que te refieres es que utilizas funciones para obtener resultados, te diré que también es correcto, pero que no es la única solución. Si utilizas una variable para indicar el resultado, se usa un procedimiento, si utilizas una función, lo unico que te devuelve es el valor, y no almacenas directamente en un sitio. Dependiendo de tu programa te interesa una cosa u otra. Esto era solo una solución a groso modo. Si tú tienes alguna duda, escribeme
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
Imágen de perfil de Danny Van Halen

RE:conversion decimal-binario

Publicado por Danny Van Halen (1 intervención) el 11/01/2013 16:46:08
Hola Miguel:
Mañana tengo un examen de pascal, y andaba un poco liado intentando sacar un subprograma que me permitiera devolver el valor binario de un integer. Tu codigo me ha servido de ayuda, y ademas esta hecho de forma recursiva, que es una de las partes de pascal de las cuales mañana me pongan un ejercicio a resolver de forma recursiva.
Muchas gracias por la ayuda que me has facilitado, pero solo queria comentarte con respecto al caso base de tu codigo, yo le he dado la condicion IF numero <> 1 THEN, porque si le metia la condicion numero <> 0 me daba un error en ejecucion. Solamente queria matizarte este aspecto por lo demas me funciona a la perfeccion muchas gracias ;)


un saludo
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

RE:conversion decimal-binario

Publicado por francisco (3 intervenciones) el 27/03/2003 11:37:43
gracias por ayudarme, pero en el algoritmo que presenta miguel no ententiendo para que se usa result:=result*10, igual como voy a viasualizar la obtención de los digitos binarios.
Soy del primer año, es una escuela básica, tengo 15 años, no tengo experiencia en programación, solo he hecho programas muy sencillos
espero sus comentarios
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

RE:conversion decimal-binario

Publicado por Diego Romero (786 intervenciones) el 28/03/2003 07:59:21
Tal vez el ejemplo de Miguel sea avanzado para tu nivel y creo que lo que no entiendes es cómo usar el procedimiento en cuestión, lo haces así.
Declara dos variables de tipo Integer llamadas Decimal y Binario, llama al procedimiento de esta manera:
Decimal := 128;
Binario:=0;
Divide2(Decimal, Binario);
WirteLn('El binario de ',Decimal,' es ',Binario);
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

RE:conversion decimal-binario

Publicado por miguel (46 intervenciones) el 28/03/2003 21:18:36
Lo siento, como no se quien lo ha escrito, no se lo que sabe.
Espero que la solución que te han dado la entiendas. si quieres, te lo puedo esplicar de manera más fácil, para que realmente comprendas tu problema.
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

RE:conversion decimal-binario

Publicado por eds (1 intervención) el 06/07/2007 14:04:45
yo quiero el programa y el como se realiza el la comvercion de dicimal a binario
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
sin imagen de perfil
Val: 36
Ha aumentado su posición en 4 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

conversion decimal-binario

Publicado por Armando José (43 intervenciones) el 01/09/2021 02:27:47
uses crt;
var
num : Integer;
ss : String ;
op : Char ;

(***********************)
(* convierte el 1 u 0 *)
(* en caracter *)
(***********************)
function gg(x:integer): char ;
begin
if (x=1) then
gg := '1'
else
gg := '0';
end;

function zzz(x:char): integer ;
begin
if (x='1') then
zzz := 1
else
zzz := 0;
end;

function poten(num, expo:integer): real ;
begin
if (expo <= 0) then
poten := 1
else
poten := num * poten(num,expo-1);
end;



(*************************)
(* devuelve una cadena *)
(* al revés *)
(*************************)
function contrario(cad:string):string ;
var
i : Integer;
t: string ;
begin
t := '';
for i:= length(cad) downto 1 do
begin
t := t + cad[i];
end;
contrario := t;
end;

(***************************)
(* convierte un decimal a *)
(* binario *)
(***************************)
function dec_bi(x:Integer):string ;
var
zz, i , y : Integer;
t: string ;
begin
t := '';
while (x>0) do
begin
zz := x mod 2;
y := x div 2;
t := t + gg(zz);
x := y;
end;
dec_bi := contrario(t);
end;

function bi_dec(cad:string):integer;
var
aux : string;
yy, suma, j : integer;
begin
aux := contrario(cad);
suma := 0;

for j:= 0 to length(aux)-1 do
begin
yy := 0;
yy := int(poten(2,j));
suma := suma + yy * zzz(aux[j+1]) ;
end;
bi_dec := suma;
end;

procedure bbb;
var
res : string ;
begin
clrscr;
res := 'S';
while (res = 'S') do
begin
writeln('ingrese el numero entero: ');
readln(num);

clrscr;
writeln('numero: ', num);
writeln('biario: ', dec_bi(num));



writeln('Desea introducir otra numero [S/N]');

readln(res);
clrscr;
res := upcase(res);

end;

end;


procedure ccc;
var
res : string ;
begin
clrscr;
res := 'S';
while (res = 'S') do
begin
writeln('ingrese el numero biario: ');
readln(ss);

clrscr;
writeln('biario: ', ss);
writeln('decimal: ', bi_dec(ss));



writeln('Desea introducir otra numero [S/N]');

readln(res);
clrscr;
res := upcase(res);

end;

end;


begin
clrscr;
repeat
writeln('******************************');
writeln('* MENU DE OPCION *');
writeln('* [1] DECIMAL A BINARIO *');
writeln('* [2] BINARIO A DECIMAL *');
writeln('* [0] SALIR *');
Writeln('******************************');
readln(op);

case op of
'1' : begin
bbb;
end;

'2' : begin
ccc;
end;
'3' : break ;

end;



until op = '0';

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