Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. program HelloDcoder;
  2.  
  3. function DecToTwo(n: Int64):string;
  4. var
  5. s, Temp: string;
  6. i: Integer;
  7. Chr: Char;
  8. begin
  9. s := '';
  10. repeat
  11. str(n mod 2, temp);
  12. s := s + temp;
  13. n := n div 2;
  14. until n = 0;
  15. for i := 1 to Length(s) div 2 do
  16. begin
  17. Chr := S[i];
  18. s[i] := s[Length(s) - i + 1];
  19. s[Length(s) - i + 1] := Chr;
  20. end;
  21. decToTwo := s;
  22. end;
  23.  
  24. function TwoToDec(s: string): Integer;
  25. var
  26. n, i, Coeff: Integer;
  27. begin
  28. n := 0;
  29. Coeff := 1;
  30. for i := Length(s) downto 1 do
  31. begin
  32. n := n + Coeff * (ord(s[i]) - 48);
  33. Coeff := Coeff * 2;
  34. end;
  35. TwoToDec := n;
  36. end;
  37. var
  38. s, newS: string;
  39. i, j: Integer;
  40. n, ResultArr: array of Integer;
  41. Chr: Char;
  42. begin
  43. i := 1;
  44. repeat
  45. SetLength(n, i);
  46. Readln(n[i - 1]);
  47. Inc(i);
  48. until n[i - 2] = 0;
  49. SetLength(ResultArr, i - 2);
  50. i := 0;
  51. while i < Length(n) - 1 do
  52. begin
  53. s := DecToTwo(n[i]);
  54. j := Length(s);
  55. NewS := '';
  56. while s[j] <> '1' do
  57. begin
  58. NewS := NewS + s[j];
  59. Dec(j);
  60. end;
  61. NewS := NewS + '1';
  62. for j := 1 to Length(NewS) div 2 do
  63. begin
  64. Chr := NewS[j];
  65. NewS[j] := NewS[Length(NewS) - j + 1];
  66. NewS[Length(NewS) - j + 1] := Chr;
  67. end;
  68. ResultArr[i] := TwoToDec(NewS);
  69. Inc(i)
  70. end;
  71. for i := 0 to Length(ResultArr) - 1 do
  72. Writeln(ResultArr[i]);
  73. Readln;
  74. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement