Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.39 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <conio.h>
  5.  
  6. using namespace std;
  7.  
  8. bool is_letter(char ch)
  9. {
  10.     if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
  11.         return true;
  12.     return false;
  13. }
  14.  
  15. void rearrange(string &word)
  16. {
  17.     string new_word;
  18.     for (int i = 0, j = 0; i < word.size() - 1, j < word.size(); i++, j++)
  19.         switch (word[i])
  20.         {
  21.         case 'c':
  22.             if (i == word.size() - 1)
  23.             {
  24.                 new_word.push_back('k');
  25.                 break;
  26.             }
  27.             if (word[i + 1] == 'e' || word[i + 1] == 'i' || word[i + 1] == 'y')
  28.                 new_word.push_back('s');
  29.             else
  30.                 new_word.push_back('k');
  31.             break;
  32.         case 'q':
  33.             if (i == word.size() - 1)
  34.             {
  35.                 new_word.push_back('k');
  36.                 break;
  37.             }
  38.             if (word[i + 1] == 'u')
  39.             {
  40.                 new_word.push_back('k');
  41.                 new_word.push_back('v');
  42.                 i++;
  43.             }
  44.             break;
  45.         case 'w':
  46.             new_word.push_back('v');
  47.             break;
  48.         case 'x':
  49.             new_word.push_back('k');
  50.             new_word.push_back('s');
  51.             //i++;
  52.             break;
  53.         case 'C':
  54.             if (i == word.size() - 1)
  55.             {
  56.                 new_word.push_back('K');
  57.                 break;
  58.             }
  59.             if (word[i + 1] == 'e' || word[i + 1] == 'i' || word[i + 1] == 'y')
  60.                 new_word.push_back('S');
  61.             else
  62.                 new_word.push_back('K');
  63.             break;
  64.         case 'Q':
  65.             if (i == word.size() - 1)
  66.             {
  67.                 new_word.push_back('K');
  68.                 break;
  69.             }
  70.             if (word[i + 1] == 'u')
  71.             {
  72.                 new_word.push_back('K');
  73.                 new_word.push_back('V');
  74.                 i++;
  75.             }
  76.             break;
  77.         case 'W':
  78.             new_word.push_back('V');
  79.             break;
  80.         case 'X':
  81.             new_word.push_back('K');
  82.             new_word.push_back('s');
  83.         //  i++;
  84.             break;
  85.         case 'p':
  86.             if (word[i + 1] == 'h')
  87.             {
  88.                 new_word.push_back('f');
  89.                 i++;
  90.             }
  91.             break;
  92.         case 'P':
  93.             if (word[i + 1] == 'h')
  94.             {
  95.                 new_word.push_back('F');
  96.                 i++;
  97.             }
  98.             break;
  99.         case 'y':
  100.             if (word.size() + 1 - i < 2)
  101.             {
  102.                 new_word.push_back('y');
  103.                 break;
  104.             }
  105.             if (word[i + 1] == 'o' && word[i + 2] == 'u')
  106.             {
  107.                 new_word.push_back('u');
  108.                 i += 2;
  109.             }
  110.             break;
  111.         case 'Y':
  112.             if (word.size() + 1 - i < 2)
  113.             {
  114.                 new_word.push_back('y');
  115.                 break;
  116.             }
  117.             if (word[i + 1] == 'o' && word[i + 2] == 'u')
  118.             {
  119.                 new_word.push_back('u');
  120.                 i += 2;
  121.             }
  122.             break;
  123.         case 'o':
  124.             if (i == word.size() - 1)
  125.             {
  126.                 new_word.push_back('o');
  127.                 break;
  128.             }
  129.             if (word[i + 1] == 'o')
  130.                 new_word.push_back('u');
  131.             else
  132.                 new_word.push_back('o');
  133.             break;
  134.         case 'O':
  135.             if (i == word.size() - 1)
  136.             {
  137.                 new_word.push_back('O');
  138.                 break;
  139.             }
  140.             if (word[i + 1] == 'o')
  141.                 new_word.push_back('U');
  142.             else
  143.                 new_word.push_back('O');
  144.             break;
  145.         case 'e':
  146.             if (i == word.size() - 1)
  147.             {
  148.                 new_word.push_back('e');
  149.                 break;
  150.             }
  151.             if (word[i + 1] == 'e')
  152.             {
  153.                 new_word.push_back('i');
  154.                 i++;
  155.             }
  156.             break;
  157.         case 'E':
  158.             if (i == word.size() - 1)
  159.             {
  160.                 new_word.push_back('E');
  161.                 break;
  162.             }
  163.             if (word[i + 1] == 'e')
  164.             {
  165.                 new_word.push_back('I');
  166.                 i++;
  167.             }
  168.             break;
  169.         case 't':
  170.             if (i == word.size() - 1)
  171.             {
  172.                 new_word.push_back('t');
  173.                 break;
  174.             }
  175.             if (word[i + 1] == 'h')
  176.             {
  177.                 new_word.push_back('z');
  178.                 i++;
  179.             }
  180.             else
  181.                 new_word.push_back('t');
  182.             break;
  183.         case 'T':
  184.             if (i == word.size() - 1)
  185.             {
  186.                 new_word.push_back('T');
  187.                 break;
  188.             }
  189.             if (word[i + 1] == 'h')
  190.             {
  191.                 new_word.push_back('Z');
  192.                 i++;
  193.             }
  194.             else
  195.                 new_word.push_back('T');
  196.             break;
  197.         default:
  198.             new_word.push_back(word[i]);
  199.         }
  200.     word = new_word;
  201. }
  202.  
  203. void del_repeated(string &word)
  204. {
  205.     string new_word;
  206.     for (int i = 0; i < word.size() - 1; i++)
  207.     {
  208.         if (!new_word.size() || word[i] == 'a' || word[i] == 'e' || word[i] == 'i' || word[i] == 'o' || word[i] == 'u')
  209.         {
  210.             new_word.push_back(word[i]);
  211.             continue;
  212.         }
  213.         if(new_word.back() != word[i])
  214.             new_word.push_back(word[i]);
  215.     }
  216.     word = new_word;
  217. }
  218.  
  219. int main()
  220. {
  221.     ifstream fi("input.txt");
  222.     ofstream fo("output.txt");
  223.  
  224.     string word;
  225.     char ch;
  226.     fi.get(ch);
  227.     while (fi.peek() != EOF)
  228.     {
  229.         if (is_letter(ch))
  230.         {
  231.             while (is_letter(ch) && fi.peek() != EOF)
  232.             {
  233.                 word.push_back(ch);
  234.                 cerr << ch;
  235.                 fi.get(ch);
  236.             } //now we have word
  237.             if (word.size() > 1)
  238.             {
  239.                 rearrange(word);
  240.                 del_repeated(word);
  241.             }
  242.             fo << word;
  243.         //  fi.get(ch);
  244.         }
  245.         else
  246.         {
  247.             fo << ch;
  248.             fi.get(ch);
  249.         }
  250.         word.clear();
  251.         word.shrink_to_fit();
  252.     }
  253.  
  254.     fi.close();
  255.     fo.close();
  256.     return 0;
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement