Author: Not specified Language: text
Description: Not specified Timestamp: 2018-05-07 08:03:51 +0000
View raw paste Reply
  1. // S 1A0
  2. // A 0B1
  3. // A 1A0
  4. // B 0B1
  5. // B _
  6.  
  7. #include <iostream>
  8. #include <iomanip>
  9.  
  10. using std::cin;
  11. using std::noskipws;
  12. using std::skipws;
  13. using std::cout;
  14. using std::endl;
  15.  
  16. void S(char&);
  17. void A(char&);
  18. void B(char&);
  19.  
  20. void S(char &c)
  21. {
  22.     if (c != '1') {
  23.         throw c;
  24.     }
  25.     A(c);
  26.     if (c != '0') {
  27.         throw c;
  28.     }
  29.     cout << '0';
  30.     cin >> noskipws >> c;
  31. }
  32.  
  33. void A(char &c)
  34. {
  35.     cin >> noskipws >> c;
  36.     if (c == '0') {
  37.         cout << '1';
  38.         B(c);
  39.         if (c != '1') {
  40.             throw c;
  41.         }
  42.         cout << '0';
  43.         cin >> noskipws >> c;
  44.     } else if (c == '1') {
  45.         A(c);
  46.         if (c != '0') {
  47.             throw c;
  48.         }
  49.         cout << '0';
  50.         cin >> noskipws >> c;
  51.     } else {
  52.         throw c;
  53.     }
  54. }
  55.  
  56. void B(char &c)
  57. {
  58.     cin >> noskipws >> c;
  59.     if (c == '0') {
  60.         cout << '1';
  61.         B(c);
  62.         if (c != '1') {
  63.             throw c;
  64.         }
  65.         cout << '0';
  66.         cin >> noskipws >> c;
  67.     }
  68. }
  69.  
  70. int main()
  71. {
  72.     char c;
  73.     while (cin >> skipws >> c) {
  74.         try {
  75.             S(c);
  76.         } catch (...) {};
  77.         if (isspace(static_cast<unsigned char>(c))) {
  78.             cout << endl;
  79.         }
  80.     }
  81.     return 0;
  82. }
View raw paste Reply