Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.97 KB | None | 0 0
  1. void left(char* s)
  2. {
  3.     s[0] = '0';
  4.     for (size_t i = 0; s[i + 1] != '\0'; ++i)
  5.     {
  6.         swap(s[i], s[i + 1]);
  7.     }
  8. }
  9.  
  10. void right(char* s)
  11. {
  12.     size_t size;
  13.     for (size = 0; s[size] != '\0'; ++size);
  14.     s[size - 1] = '0';
  15.     for (size_t i = size - 1; i > 0; --i)
  16.     {
  17.         swap(s[i], s[i - 1]);
  18.     }
  19. }
  20.  
  21. char* addition(const char* left, const char* right)
  22. {
  23.     size_t leftSize, rightSize;
  24.     for (leftSize = 0; left[leftSize] != '\0'; ++leftSize);
  25.     for (rightSize = 0; right[rightSize] != '\0'; ++rightSize);
  26.     size_t length = std::max(leftSize, rightSize);
  27.     char* res = new char[length + 1];
  28.     res[length] = '\0';
  29.  
  30.     size_t i = 1;
  31.     for (i = 1; leftSize >= i && rightSize >= i; ++i)
  32.     {
  33.         res[length - i] = (left[leftSize - i] == '1' || right[rightSize - i] == '1' ? '1' : '0');
  34.     }
  35.     for (; leftSize >= i; ++i)
  36.     {
  37.         res[length - i] = left[leftSize - i];
  38.     }
  39.     for (; rightSize >= i; ++i)
  40.     {
  41.         res[length - i] = right[rightSize - i];
  42.     }
  43.     return res;
  44. }
  45.  
  46. char* composition(const char* left, const char* right)
  47. {
  48.     size_t leftSize, rightSize;
  49.     for (leftSize = 0; left[leftSize] != '\0'; ++leftSize);
  50.     for (rightSize = 0; right[rightSize] != '\0'; ++rightSize);
  51.     size_t length = std::max(leftSize, rightSize);
  52.     char* res = new char[length + 1];
  53.     res[length] = '\0';
  54.  
  55.     size_t i = 1;
  56.     for (i = 1; leftSize >= i && rightSize >= i; ++i)
  57.     {
  58.         res[length - i] = (left[leftSize - i] == '1' && right[rightSize - i] == '1' ? '1' : '0');
  59.     }
  60.     for (; length >= i; ++i)
  61.     {
  62.         res[length - i] = '0';
  63.     }
  64.     return res;
  65. }
  66.  
  67. char* hex(const char* s)
  68. {
  69.     size_t size;
  70.     for (size = 0; s[size] != '\0'; ++size);
  71.     size_t length = (size + 3) / 4;
  72.     char* res = new char[length + 1];
  73.     res[length] = '\0';
  74.  
  75.     char* ptr = res;
  76.     int add = (size % 4 > 0 ? size % 4 : 4);
  77.     for (int i = 0; i < size; i += add)
  78.     {
  79.         size_t base = 1;
  80.         int dig = 0;
  81.         for (int j = i + add - 1; j >= i; --j)
  82.         {
  83.             dig += (s[j] == '1') * base;
  84.             base *= 2;
  85.         }
  86.         *ptr++ = "0123456789ABCDEF"[dig];
  87.         add = 4;
  88.     }
  89.     return res;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement