Pascal/Turbo Pascal - Conversion de decimal a binario en pascal.

 
Vista:
sin imagen de perfil

Conversion de decimal a binario en pascal.

Publicado por Ramiro (1 intervención) el 12/07/2019 22:28:01
Buenas tardes, realizando un practico para la facultad en el que se proponen varios puntos entre ellos conseguir generar un codigo de barras y un codigo QR, logicamente reemplazando por caracteres los bloques o barras, me encuentro con el problema de que debo convertir a binario los numeros del codigo de barras para cada producto. En este caso nos plantean que los primeros 3 digitos del numero seran el identificador de la empresa y que los proximos 4 a estos seran el precio del producto, con un valor maximo de 9999. Ahora bien, cual seria la mejor manera de transformar los numeros en decimal de un arreglo, pasandolos a binario y de esta manera poder reemplazar los 1 por barras y los 0 por espacios en blanco?
Dejo a continuacion lo que tenemos logrado del codigo hasta el momento, se agradeceria que unicamente se modificara la seccion que falta añadir en caso de hacer el arreglo por mi. Saludos y que tengan un muy buen dia.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Procedure CB;
Begin
     WriteLn('Ingrese el codigo de la empresa:');
     Repeat
     Readln (CodE);
     Until (CodE >= 0) and (CodE <= 999);
     WriteLn('Ingrese el importe del producto:');
     Repeat
     Readln (Imp);
     until (Imp >=0) and (Imp <= 9999);
 
 
     E1:= (CodE) Div 100;
     E2:= (CodE)Div(10) - (CodE) Div 100 *  10 ;
     E3:= (CodE) - (CodE div 100 * 100) - E2 *  10 ;
     writeln (E1,' Primer digito empresa.');
     writeln (E2,' Segundo digito empresa.');
     writeln (E3, ' Tercer digito empresa.');
     writeln(' ');
     P1:= (Imp) Div 1000;
     P2:= (Imp) Div(100) - (Imp) Div 1000 *  10 ;
     P3:= ((Imp) - (Imp div 100 * 100)) Div 10  ;
     P4:= ((Imp) - (Imp div 1000 * 1000)) - P2 *100 - P3*10 ;
     writeln (P1,' Primer digito precio.');
     writeln (P2,' Segundo digito precio.');
     writeln (P3,' Tercer digito precio.');
     writeln (P4,' Cuarto digito precio.');
 
     Co[1]:=E1;
     Co[2]:=E2;
     Co[3]:=E3;
     Co[4]:=P1;
     Co[5]:=P2;
     Co[6]:=P3;
     Co[7]:=P4;
     par:= Co[2]+Co[4]+Co[6];
     impar:= Co[1]+Co[3]+Co[5]+Co[7];
     writeln ('Par=', par,'Impar=',impar);
     r:=Abs(par-impar) Div 10  ;
     Co[8]:= r ;
 
     writeln('  ');
     Readkey();
 
End;
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
sin imagen de perfil
Val: 2
Ha aumentado su posición en 5 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Conversion de decimal a binario en pascal.

Publicado por Marcelo (1 intervención) el 18/07/2019 14:06:50
Hola, por lo que veo es el tp2 de ayed de utn rosario. nosotros hicimos unas funciones para separar los numeros de 3 y 4 cifras. Luego los guardamos en otro arreglo y los fuimos imprimiendo uno a uno con un write como bien decis vos. Hasta aca es sencillo.

La transformacion de decimal a binario se realiza de la siguiente manera.

tomemos de ejemplo el numero 9... nos pide que cada numero decimal este expresado en cuatro bits binario, cierto?

ok

lo 1ro

9 div 2 = 4 y lo retenemos en una variable, por ejemplo X.
luego 9 mod 2 = 1 y a este numero lo almacenamos en la ultima posicion del numero de 4 bits binario, por ejemplo B4

usamos ahora el 4 almacenado en la variable X.

hacemos lo mismo, DIV y MOD por 2, X es 2 y B3 es 0

tercera vez, X es 1 y B2 es 0

cuarta y ultima, X es 0 y B1 es 1

entonces tu numero queda B1 B2 B3 B4, o sea, 1001

conviene almacenarlo en un arreglo para extraerlo y mostrarlo en pantalla.

Nosotros usamos ascii 219 para los unos y ascii 32 para los ceros.

Espero haberte ayudado, a mi me ayudaron otros.

Marcelo com 14
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: 5
Ha aumentado su posición en 6 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Conversion de decimal a binario en pascal.

Publicado por Diego (3 intervenciones) el 18/07/2019 22:30:36
Hola. Por lo que veo es el TP de ISI de UTN Rosario.
Como debes hacer número por número, y el dígito mayor en decimal es 9, con sólo dividirlo trés veces ya podrás pasarlo a binario.
Te dejo la parte de cómo pasar cada número a binario, como yo lo hice, y capaz te puede ayudar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program tp;
uses crt;
type
pass=array[1..3] of integer;
 
var
a:pass;
i:integer;
c:integer;
begin
write(Utf8ToAnsi('Número a pasar a binario: '));
read(c);
for i:=1 to 3 do
begin
a[i]:= (c) mod 2;
c:=(C div 2);
end;
write((c),A[3],A[2],A[1]);
readln();
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