Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Урок 4: Как set делает поиск точнее
- Задание
- Научите свою поисковую систему отбрасывать стоп-слова. На вход примите сначала строку стоп-слов, а затем с нового абзаца — строку-запрос. Выводите только те слова, которых нет в списке запрещённых. Формат вывода слов оставьте как в заготовке кода.
- Функция разбиения строки на слова у вас уже реализована, осталось сделать фильтрацию.
- Ввод:
- with many very
- very kind dog with brown fur
- Вывод:
- [kind]
- [dog]
- [brown]
- [fur]
- Подсказка:
- Разбейте строку стоп-слов на отдельные слова и сделайте из них множество. Вектор слов из запроса надо формировать, предварительно проверяя, не входит ли каждое слово в список запрещённых.
- */
- #include <iostream>
- #include <string>
- #include <vector>
- #include <set>
- using namespace std;
- // функция разбиения строки на слова и занесения слов в вектор
- vector<string> SplitIntoWords(string text){
- vector<string> words;
- string word;
- for (int i = 0; i < text.size(); ++i){
- if (text[i] == ' '){
- words.push_back(word); // заносим слово в вектор words
- word = ""; // очищаем word
- }else{
- word += text[i];
- }
- }
- words.push_back(word);
- return words;
- }
- int main() {
- string query;
- getline(cin, query); // вводим строку запрещенных слов
- set <string> stop_words; // создаём множество для запрещенных слов
- // заполняем множество stop_words запрещенными словами
- for (string word : SplitIntoWords(query)) {
- stop_words.insert(word);
- }
- //---------------------------------------------------
- getline(cin, query); // вводим строку-запрос
- vector<string> query_words; // создаём вектор для запроса
- // фильтрация и вывод слов
- for (string word : SplitIntoWords(query)) {
- if (stop_words.count(word) == 0) {
- query_words.push_back(word);
- }
- }
- for (string word : query_words) {
- cout << '[' << word << ']' << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement