Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <sstream>
- #include <vector>
- #include <queue>
- #include <set>
- using namespace std;
- vector<string> readInput()
- {
- vector<string> result;
- string text;
- getline(cin, text);
- istringstream input(text);
- string word;
- while (input >> word)
- {
- result.push_back(word);
- }
- return result;
- }
- queue<char> readLetters()
- {
- queue<char> result;
- char letter;
- cin >> letter;
- while (letter != '.')
- {
- result.push(letter);
- cin >> letter;
- }
- return result;
- }
- void clearWord(string &currWord)
- {
- if (ispunct(currWord.back()))
- {
- currWord.pop_back();
- }
- if (ispunct(currWord.front()))
- {
- currWord.erase(currWord.begin());
- }
- }
- void findLetter(string & word, const char &letter, set<string>& temp)
- {
- clearWord(word);
- const int size = word.size();
- for (int i = 0; i < size; i++)
- {
- if (word[i] == letter || word[i] == (letter - 32) || word[i] == (letter + 32))
- {
- temp.insert(word);
- }
- }
- }
- void findMatchedWords(vector<string> &inputText,
- queue<char>& letters)
- {
- const int sizeOfVector = inputText.size();
- while (!letters.empty())
- {
- set<string> matchedWord;
- for (int i = 0; i < sizeOfVector; i++)
- {
- findLetter(inputText[i], letters.front(), matchedWord);
- }
- if (matchedWord.size() > 0)
- {
- for (string elem : matchedWord)
- {
- cout << elem << ' ';
- }
- }
- else
- {
- cout << "---";
- }
- cout << endl;
- letters.pop();
- }
- }
- int main()
- {
- vector<string> text = readInput();
- queue<char> searchedLetters = readLetters();
- findMatchedWords(text, searchedLetters);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment