Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <conio.h>
- using namespace std;
- bool is_letter(char ch)
- {
- if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
- return true;
- return false;
- }
- void rearrange(string &word)
- {
- string new_word;
- for (int i = 0, j = 0; i < word.size() - 1, j < word.size(); i++, j++)
- switch (word[i])
- {
- case 'c':
- if (i == word.size() - 1)
- {
- new_word.push_back('k');
- break;
- }
- if (word[i + 1] == 'e' || word[i + 1] == 'i' || word[i + 1] == 'y')
- new_word.push_back('s');
- else
- new_word.push_back('k');
- break;
- case 'q':
- if (i == word.size() - 1)
- {
- new_word.push_back('k');
- break;
- }
- if (word[i + 1] == 'u')
- {
- new_word.push_back('k');
- new_word.push_back('v');
- i++;
- }
- break;
- case 'w':
- new_word.push_back('v');
- break;
- case 'x':
- new_word.push_back('k');
- new_word.push_back('s');
- //i++;
- break;
- case 'C':
- if (i == word.size() - 1)
- {
- new_word.push_back('K');
- break;
- }
- if (word[i + 1] == 'e' || word[i + 1] == 'i' || word[i + 1] == 'y')
- new_word.push_back('S');
- else
- new_word.push_back('K');
- break;
- case 'Q':
- if (i == word.size() - 1)
- {
- new_word.push_back('K');
- break;
- }
- if (word[i + 1] == 'u')
- {
- new_word.push_back('K');
- new_word.push_back('V');
- i++;
- }
- break;
- case 'W':
- new_word.push_back('V');
- break;
- case 'X':
- new_word.push_back('K');
- new_word.push_back('s');
- // i++;
- break;
- case 'p':
- if (word[i + 1] == 'h')
- {
- new_word.push_back('f');
- i++;
- }
- break;
- case 'P':
- if (word[i + 1] == 'h')
- {
- new_word.push_back('F');
- i++;
- }
- break;
- case 'y':
- if (word.size() + 1 - i < 2)
- {
- new_word.push_back('y');
- break;
- }
- if (word[i + 1] == 'o' && word[i + 2] == 'u')
- {
- new_word.push_back('u');
- i += 2;
- }
- break;
- case 'Y':
- if (word.size() + 1 - i < 2)
- {
- new_word.push_back('y');
- break;
- }
- if (word[i + 1] == 'o' && word[i + 2] == 'u')
- {
- new_word.push_back('u');
- i += 2;
- }
- break;
- case 'o':
- if (i == word.size() - 1)
- {
- new_word.push_back('o');
- break;
- }
- if (word[i + 1] == 'o')
- new_word.push_back('u');
- else
- new_word.push_back('o');
- break;
- case 'O':
- if (i == word.size() - 1)
- {
- new_word.push_back('O');
- break;
- }
- if (word[i + 1] == 'o')
- new_word.push_back('U');
- else
- new_word.push_back('O');
- break;
- case 'e':
- if (i == word.size() - 1)
- {
- new_word.push_back('e');
- break;
- }
- if (word[i + 1] == 'e')
- {
- new_word.push_back('i');
- i++;
- }
- break;
- case 'E':
- if (i == word.size() - 1)
- {
- new_word.push_back('E');
- break;
- }
- if (word[i + 1] == 'e')
- {
- new_word.push_back('I');
- i++;
- }
- break;
- case 't':
- if (i == word.size() - 1)
- {
- new_word.push_back('t');
- break;
- }
- if (word[i + 1] == 'h')
- {
- new_word.push_back('z');
- i++;
- }
- else
- new_word.push_back('t');
- break;
- case 'T':
- if (i == word.size() - 1)
- {
- new_word.push_back('T');
- break;
- }
- if (word[i + 1] == 'h')
- {
- new_word.push_back('Z');
- i++;
- }
- else
- new_word.push_back('T');
- break;
- default:
- new_word.push_back(word[i]);
- }
- word = new_word;
- }
- void del_repeated(string &word)
- {
- string new_word;
- for (int i = 0; i < word.size() - 1; i++)
- {
- if (!new_word.size() || word[i] == 'a' || word[i] == 'e' || word[i] == 'i' || word[i] == 'o' || word[i] == 'u')
- {
- new_word.push_back(word[i]);
- continue;
- }
- if(new_word.back() != word[i])
- new_word.push_back(word[i]);
- }
- word = new_word;
- }
- int main()
- {
- ifstream fi("input.txt");
- ofstream fo("output.txt");
- string word;
- char ch;
- fi.get(ch);
- while (fi.peek() != EOF)
- {
- if (is_letter(ch))
- {
- while (is_letter(ch) && fi.peek() != EOF)
- {
- word.push_back(ch);
- cerr << ch;
- fi.get(ch);
- } //now we have word
- if (word.size() > 1)
- {
- rearrange(word);
- del_repeated(word);
- }
- fo << word;
- // fi.get(ch);
- }
- else
- {
- fo << ch;
- fi.get(ch);
- }
- word.clear();
- word.shrink_to_fit();
- }
- fi.close();
- fo.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement