valenki13

hanoi

Dec 1st, 2023
897
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 1 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. // про void и не void
  7. int glo = 0;
  8. bool fun1() {
  9.     glo = 2;
  10.     return true;
  11. }
  12. void test_fun() {
  13.     if (fun1()) {
  14.         cout << 1.0 / glo << endl;
  15.     }
  16. }
  17.  
  18. double power(double x, int n) {
  19.     if (n == 0)
  20.         return 1.0;
  21.     if (n == 1)
  22.         return x;
  23.     return x * power(x, n - 1);
  24. }
  25.  
  26. void test_power() {
  27.     cout << "2^4 = " << power(2.0, 4) << endl; // 16
  28. }
  29.  
  30. const int n = 3;
  31. int a[n]{};
  32. int b[n]{};
  33. int c[n]{};
  34.  
  35. void init() {
  36.     for (int k = 0; k < n; k++) {
  37.         a[k] = k + 1;
  38.     }
  39. }
  40.  
  41. void show_tower(int *x) {
  42.     cout << "(";
  43.     for (int k = 0; k < n-1; k++) {
  44.         cout << x[k] << ", ";
  45.     }
  46.     cout << x[n - 1];
  47.     cout << ")";
  48. }
  49.  
  50. void show_towers() {
  51.     show_tower(a);
  52.     cout << " ";
  53.     show_tower(b);
  54.     cout << " ";
  55.     show_tower(c);
  56.     cout << endl;
  57. }
  58.  
  59. void move(int* from, int* to) {
  60.     int k = 0;
  61.     while (k < n && from[k] == 0)
  62.         k++;
  63.     int m = 0;
  64.     while (m < n && to[m] == 0)
  65.         m++;
  66.     // пока не исправил
  67.     if (k < n)
  68.         if(m > 0 && from[k] < to[m]) {
  69.             cout << to[m] << " " << from[k] << " ";
  70.             to[m - 1] = from[k];
  71.             from[k] = 0;       
  72.         }
  73. }
  74.  
  75. bool is_good() {
  76.     for (int k = 0; k < n-1; k++) {
  77.         if (a[k + 1] < a[k] ||
  78.             b[k + 1] < b[k] ||
  79.             c[k + 1] < c[k])
  80.             return false;
  81.     }
  82.     return true;
  83. }
  84.  
  85. void hanoi() {
  86.     init();
  87.     //cout << is_good();
  88.     show_towers();
  89.    
  90.    
  91.     move(a, c);
  92.     //cout << is_good();
  93.     show_towers(); 
  94.    
  95.     move(a, c);
  96.     //cout << is_good();
  97.     show_towers(); 
  98.    
  99.     move(b, c);
  100.     //cout << is_good();
  101.     show_towers();
  102.    
  103. }
  104.  
  105. int main() {
  106.     //test_power();
  107.     hanoi();
  108.     return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment