thoga31

Binary converter (Pascal)

Aug 5th, 2013
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.32 KB | None | 0 0
  1. program binario;
  2. uses math;
  3.  
  4. type TDynamicLongWordList = array of longword;
  5.  
  6. function binary(n : longword) : string;
  7. var Power2List : TDynamicLongWordList = nil;
  8.     bits : byte = 0;
  9.     i : smallint;
  10. begin
  11.     binary := '';
  12.     bits := trunc(ln(n)/ln(2));
  13.     SetLength(Power2List, bits+1);
  14.     for i := 0 to bits do
  15.         Power2List[bits-i] := trunc(Power(2, i));
  16.     for i := 0 to bits do
  17.         if n >= Power2List[i] then begin
  18.             binary := binary + '1';
  19.             dec(n, Power2List[i]);
  20.         end else
  21.             binary := binary + '0';
  22. end;
  23.  
  24.  
  25. function numeric(b : string) : longword;
  26. var Power2List : TDynamicLongWordList = nil;
  27.     bits : byte = 0;
  28.     i : smallint;
  29. begin
  30.     numeric := 0;
  31.     bits := length(b)-1;
  32.     SetLength(Power2List, bits+1);
  33.     for i := 0 to bits do
  34.         Power2List[bits-i] := trunc(Power(2, i));
  35.     for i := 0 to bits do
  36.         if b[i+1] = '1' then
  37.             inc(numeric, Power2List[i]);
  38. end;
  39.  
  40.  
  41. var num : longword = 0;
  42.     s : string = '';
  43. begin
  44.     writeln('BINARY TEST');
  45.     repeat
  46.         readln(num);
  47.         if (num > 0) then writeln(num, ' => ', binary(num));
  48.     until num = 0;
  49.     writeln('NUMERIC TEST');
  50.     repeat
  51.         readln(s);
  52.         if (s <> '') and (s <> '0') then writeln(s, ' => ', numeric(s));
  53.     until s = '0';
  54. end.
Advertisement
Add Comment
Please, Sign In to add comment