Advertisement
avr39ripe

cppStrCmpStrRevNumStrEtc

May 28th, 2021
1,186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.40 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int strCmp(const char* str1, const char* str2)
  4. {
  5.     size_t len1{ strlen(str1) };
  6.     size_t len2{ strlen(str2) };
  7.     int result{ 0 };
  8.  
  9.     if (len1 == len2)
  10.     {
  11.         while (*str1 and (*str1 == *str2))
  12.         {
  13.             ++str1;
  14.             ++str2;
  15.         }
  16.         result = *str1 ? 2 : 0;
  17.     }
  18.     else { result = len1 > len2 ? 1 : -1; }
  19.  
  20.     return result;
  21. }
  22.  
  23.  
  24. char* strRev(char* str)
  25. {
  26.     char* head{ str };
  27.     char* tail{ str };
  28.  
  29.     while (*tail++);
  30.     tail-=2;
  31.  
  32.     for (char tmp; head < tail; ++head, --tail)
  33.     {
  34.         tmp = *head;
  35.         *head = *tail;
  36.         *tail = tmp;
  37.     }
  38.  
  39.     return str;
  40. }
  41.  
  42. char* toUpper(char* str)
  43. {
  44.     const char caseConvert{ 32 };
  45.     char* start{ str };
  46.  
  47.     for (;*str; ++str)
  48.     {
  49.         if (*str >= 'a' and *str <= 'z') { *str -= caseConvert; }
  50.     }
  51.  
  52.     return start;
  53. }
  54.  
  55. char* toLower(char* str)
  56. {
  57.     const char caseConvert{ 32 };
  58.     char* start{ str };
  59.  
  60.     for (; *str; ++str)
  61.     {
  62.         if (*str >= 'A' and *str <= 'Z') { *str += caseConvert; }
  63.     }
  64.  
  65.     return start;
  66. }
  67.  
  68. char* numToStr(int num, char* str)
  69. {
  70.     char tmp;
  71.  
  72.     for (size_t i{ 0 }; *(str + i) = (num > 0 ? '0' + (num % 10) : 0); num /= 10, ++i);
  73.  
  74.     for (size_t head{ 0 }, tail{ strlen(str) - 1 }; head < tail; ++head, --tail)
  75.     {
  76.         tmp = *(str + head);
  77.         *(str + head) = *(str + tail);
  78.         *(str + tail) = tmp;
  79.     }
  80.  
  81.     return str;
  82. }
  83.  
  84. int strToNum(const char* str)
  85. {
  86.     int num{ 0 };
  87.     for (; *str; num *= 10, num += *str++ - '0');
  88.  
  89.     return num;
  90. }
  91.  
  92. int main()
  93. {
  94.     char strA[]{ "Hello!" };
  95.     char strB[]{ "Hello#" };
  96.     char strC[]{ "Hello, world!" };
  97.  
  98.     char str[]{ "123456" };
  99.     char str1[]{ "Hello!" };
  100.     char str2[]{ "Hello, number 1 (One) WoRlD!" };
  101.     char str3[]{ "Hello, number 1 (One) WoRlD!" };
  102.  
  103.     std::cout << "Equal: " << std::boolalpha << (strCmp(strA, strA) == 0) << '\n';
  104.     std::cout << "Not equal: " << std::boolalpha << (strCmp(strA, strB) == 2) << '\n';
  105.     std::cout << "First shorter: " << std::boolalpha << (strCmp(strA, strC) == -1) << '\n';
  106.     std::cout << "First longer: " << std::boolalpha << (strCmp(strC, strA) == 1) << '\n';
  107.  
  108.     std::cout << strRev(str) << '\n';
  109.     std::cout << strRev(str1) << '\n';
  110.  
  111.     std::cout << toUpper(str) << '\n';
  112.     std::cout << toUpper(str1) << '\n';
  113.     std::cout << toUpper(str2) << '\n';
  114.  
  115.     std::cout << toLower(str) << '\n';
  116.     std::cout << toLower(str1) << '\n';
  117.     std::cout << toLower(str3) << '\n';
  118.  
  119.     char strBuf[10];
  120.     std::cout << numToStr(26907, strBuf) << '\n';
  121.     std::cout << strToNum(strBuf) << '\n';
  122.  
  123.     return 0;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement