C/C++

Помогите с решение задания в С++

#include <algorithm>
#include <iostream>
#include <set>
#include <string>
#include <utility>
#include <vector>
using namespace std;
string ReadLine() {
string s;
getline(cin, s);
return s;}
int ReadLineWithNumber() {
int result = 0;
cin >> result;
ReadLine();
return result;}
vector<string> SplitIntoWords(const string& text) {
vector<string> words;
string word;
for (const char c : text) {
if (c == ' ') {
if (!word.empty()) {
words.push_back(word);
word.clear();
}
} else {
word += c;
}
}
if (!word.empty()) {
words.push_back(word);
}
return words;
}
set<string> ParseStopWords(const string& text) {
set<string> stop_words;
for (const string& word : SplitIntoWords(text)) {
stop_words.insert(word);
}
return stop_words;
}
vector<string> SplitIntoWordsNoStop(const string& text, const set<string>& stop_words) {
vector<string> words;
// проходим по всем словам из текста и проверяем, что их нет в списке стоп-слов
for (const string& word : SplitIntoWords(text)) {
if (stop_words.count(word) == 0) {
words.push_back(word);
}
}
// вернём результат без стоп-слов
return words;
}
void AddDocument(vector<vector<string>>& documents, const set<string>& stop_words,
const string& document) {
const vector<string> words = SplitIntoWordsNoStop(document, stop_words);
documents.push_back(words);
}
// Разбирает text на слова и возвращает только те из них, которые не входят в stop_words
set<string> ParseQuery(const string& text, const set<string>& stop_words) {
set<string> query_words;
// Напишите код функции
return query_words;
}
// Возвращает true, если среди слов документа (document_words)
// встречаются слова поискового запроса query_words
bool MatchDocument(const vector<string>& document_words, const set<string>& query_words) {
// Напишите код функции
return false;
}
// Возвращает массив id документов, подходящих под запрос query
// Стоп-слова исключаются из поиска
vector<int> FindDocuments(const vector<vector<string>>& documents, const set<string>& stop_words,
const string& query) {
vector<int> matched_documents;
// Напишите код функции
// Воспользуйте вспомогательными функциями ParseQuery, MatchDocument
// В качестве id документа используйте его индекс в массиве documents
return matched_documents;
}
int main() {
const string stop_words_joined = ReadLine();
const set<string> stop_words = ParseStopWords(stop_words_joined);
// Read documents
vector<vector<string>> documents;
const int document_count = ReadLineWithNumber();
for (int document_id = 0; document_id < document_count; ++document_id) {
AddDocument(documents, stop_words, ReadLine());
}
const string query = ReadLine();
for (const int document_id : FindDocuments(documents, stop_words, query)) {
cout << "{ document_id = "s << document_id << " }"s << endl;
}
}
Beka Aklbek
Beka Aklbek
232
#include
#include
#include
#include
#include
#include
using namespace std;
string ReadLine() {
string s;
getline(cin, s);
return s;
}
int ReadLineWithNumber() {
int result = 0;
cin >> result;
ReadLine();
return result;
}
vector SplitIntoWords(const string& text) {
vector words;
string word;
for (const char c : text) {
if (c == ' ') {
if (!word.empty()) {
words.push_back(word);
word.clear();
}
} else {
word += c;
}
}
if (!word.empty()) {
words.push_back(word);
}
return words;
}
set ParseStopWords(const string& text) {
set stop_words;
for (const string& word : SplitIntoWords(text)) {
stop_words.insert(word);
}
return stop_words;
}
vector SplitIntoWordsNoStop(const string& text, const set& stop_words) {
vector words;
// проходим по всем словам из текста и проверяем, что их нет в списке стоп-слов
for (const string& word : SplitIntoWords(text)) {
if (stop_words.count(word) == 0) {
words.push_back(word);
}
}
// вернём результат без стоп-слов
return words;
}
void AddDocument(vector<vector>& documents, const set& stop_words,
const string& document) {
const vector words = SplitIntoWordsNoStop(document, stop_words);
documents.push_back(words);
}

// Разбирает text на слова и возвращает только те из них, которые не входят в stop_words
set ParseQuery(const string& text, const set& stop_words) {
set query_words;
// Напишите код функции
vector tmp = SplitIntoWordsNoStop(text, stop_words);
query_words = set(tmp.begin(), tmp.end());
//set s(query_words.begin(), query_words.end());
return query_words;
}
// Возвращает true, если среди слов документа (document_words)
// встречаются слова поискового запроса query_words
bool MatchDocument(const vector& document_words, const set& query_words) {
// Напишите код функции
for (const string& str : document_words){
if(query_words.count(str) != 0){
return true;
}
}
return false;
}
// Возвращает массив id документов, подходящих под запрос query
// Стоп-слова исключаются из поиска
vector FindDocuments(const vector<vector>& documents, const set& stop_words,
const string& query) {
vector matched_documents;
// Напишите код функции
// Воспользуйте вспомогательными функциями ParseQuery, MatchDocument
// В качестве id документа используйте его индекс в массиве documents
set parsed_query = ParseQuery(query, stop_words);
//for (int i=0; i < documents.size(); ++i){
// ...
//}
int doc_size = documents.size();
for (int i=0; i < doc_size; ++i){
if (MatchDocument(documents[i], parsed_query)){
matched_documents.push_back(i);
}
}
return matched_documents;
}
int main() {
const string stop_words_joined = ReadLine();
const set stop_words = ParseStopWords(stop_words_joined);
// Read documents
vector<vector> documents;
const int document_count = ReadLineWithNumber();
for (int document_id = 0; document_id < document_count; ++document_id) {
AddDocument(documents, stop_words, ReadLine());
}
const string query = ReadLine();
for (const int document_id : FindDocuments(documents, stop_words, query)) {
cout << "{ document_id = "s << document_id << " }"s << endl;
}
}
Ernur Tynyshtykbai
Ernur Tynyshtykbai
96
Лучший ответ