mitakvd

4. Letters

Nov 14th, 2019
439
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. #include <vector>
  5. #include <queue>
  6. #include <set>
  7.  
  8. using namespace std;
  9.  
  10. vector<string> readInput()
  11. {
  12.     vector<string> result;
  13.     string text;
  14.     getline(cin, text);
  15.     istringstream input(text);
  16.  
  17.     string word;
  18.  
  19.     while (input >> word)
  20.     {
  21.         result.push_back(word);
  22.     }
  23.  
  24.     return result;
  25. }
  26.  
  27. queue<char> readLetters()
  28. {
  29.     queue<char> result;
  30.     char letter;
  31.     cin >> letter;
  32.     while (letter != '.')
  33.     {
  34.         result.push(letter);
  35.         cin >> letter;
  36.     }
  37.     return result;
  38. }
  39.  
  40. void clearWord(string &currWord)
  41. {
  42.     if (ispunct(currWord.back()))
  43.     {
  44.         currWord.pop_back();
  45.     }
  46.  
  47.     if (ispunct(currWord.front()))
  48.     {
  49.         currWord.erase(currWord.begin());
  50.     }
  51. }
  52.  
  53. void findLetter(string & word, const char &letter, set<string>& temp)
  54. {
  55.     clearWord(word);
  56.  
  57.     const int size = word.size();
  58.     for (int i = 0; i < size; i++)
  59.     {
  60.         if (word[i] == letter || word[i] == (letter - 32) || word[i] == (letter + 32))
  61.         {
  62.             temp.insert(word);
  63.         }
  64.     }
  65. }
  66.  
  67. void findMatchedWords(vector<string> &inputText,
  68.                             queue<char>& letters)
  69. {
  70.     const int sizeOfVector = inputText.size();
  71.    
  72.     while (!letters.empty())
  73.     {
  74.         set<string> matchedWord;
  75.         for (int i = 0; i < sizeOfVector; i++)
  76.         {
  77.             findLetter(inputText[i], letters.front(), matchedWord);
  78.         }
  79.         if (matchedWord.size() > 0)
  80.         {
  81.             for (string elem : matchedWord)
  82.             {
  83.                 cout << elem << ' ';
  84.             }
  85.         }
  86.         else
  87.         {
  88.             cout << "---";
  89.         }
  90.         cout << endl;
  91.         letters.pop();
  92.     }
  93. }
  94.  
  95. int main()
  96. {
  97.     vector<string> text = readInput();
  98.     queue<char> searchedLetters = readLetters();
  99.  
  100.     findMatchedWords(text, searchedLetters);
  101.  
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment