Advertisement
Petro_zzz

081223

Dec 8th, 2023
800
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.32 KB | None | 0 0
  1. /* https://pastebin.com/hQRdceCL */
  2.  
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. const int n = 6;
  8. int a[n]{};
  9. int b[n]{};
  10. int c[n]{};
  11.  
  12. void init() {
  13.     for (int k = 0; k < n; k++) {
  14.         a[k] = k + 1;
  15.     }
  16. }
  17.  
  18. void show_tower(int* x) {
  19.     cout << "(";
  20.     for (int k = 0; k < n - 1; k++) {
  21.         cout << x[k] << ", ";
  22.     }
  23.     cout << x[n - 1];
  24.     cout << ")";
  25. }
  26.  
  27. void show_towers() {
  28.     show_tower(a);
  29.     cout << " ";
  30.     show_tower(b);
  31.     cout << " ";
  32.     show_tower(c);
  33.     cout << endl;
  34. }
  35.  
  36. int num_iter = 0;
  37.  
  38. void move(int* from, int* to) {
  39.     num_iter++;
  40.     int k = 0;
  41.     while (k < n && from[k] == 0)
  42.         k++;
  43.     int m = 0;
  44.     while (m < n && to[m] == 0)
  45.         m++;   
  46.    
  47.     if (k < n)
  48.         if (m > 0 && ((m == n) || from[k] < to[m])) {          
  49.             to[m - 1] = from[k];
  50.             from[k] = 0;
  51.         }
  52. }
  53.  
  54. bool is_good() {
  55.     for (int k = 0; k < n - 1; k++) {
  56.         if (a[k + 1] < a[k] ||
  57.             b[k + 1] < b[k] ||
  58.             c[k + 1] < c[k])
  59.             return false;
  60.     }
  61.     return true;
  62. }
  63.  
  64. void hanoi() {
  65.     init();
  66.     //cout << is_good();
  67.     show_towers();
  68.     move(a, c);
  69.     show_towers();
  70.     move(a, b);
  71.     show_towers();
  72.     move(c, b);
  73.     show_towers();
  74.     move(a, c);
  75.     show_towers();
  76.     move(b, a);
  77.     show_towers();
  78.     move(b, c);
  79.     show_towers();
  80.     move(a, c);
  81.     show_towers();
  82. }
  83.  
  84. void hanoi_solver(int m, int* from, int* tmp, int* to) {
  85.     if (m > 0) {
  86.         hanoi_solver(m - 1, from, to, tmp);
  87.         move(from, to);
  88.         show_towers();
  89.         hanoi_solver(m - 1, tmp, from, to);
  90.     }
  91. }
  92.  
  93. void test_play() {
  94.     init();
  95.     show_towers();
  96.     hanoi_solver(n, a, b, c);
  97.     cout << num_iter << endl;
  98. }
  99.  
  100. int fun(char s[]) {
  101.     if (strcmp(s, "123") == 0)
  102.         return 123;
  103.     else
  104.         return 0;
  105. }
  106.  
  107. void test_str_vs_num() {
  108.     char str1[] = "124.0a";
  109.     const char* str2 = "125.5";
  110.     std::string str3 = "126.6";
  111.     /*
  112.     Поясняется проблематика
  113.     int d = fun(str1);
  114.     cout << d + 21 << endl;
  115.     cout << (int(str1[0]) -48)+13 << " "
  116.          << (int(str1[1]) -48)+13 << " "
  117.          << (int(str1[2]) -48)+13 << endl;
  118.  
  119.     cout << 1+1 << endl;
  120.     cout << char('1' + 1) << endl;
  121.     */
  122.     cout << atoi(str1) + 13 << endl;
  123.     cout << atoi(str2) + 13 << endl;
  124.     cout << atoi(str3.data()) + 13 << endl;
  125.  
  126.     cout << atof(str1) + 13 << endl;
  127.     cout << atof(str2) + 13 << endl;
  128.     cout << atof(str3.data()) + 13 << endl;
  129.  
  130.     char buff[16];
  131.     _itoa_s(768, buff, 2);
  132.     cout << buff << endl;
  133.  
  134. }
  135.  
  136.  
  137. int main() {
  138.     test_str_vs_num();
  139.     return 0;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement