C/C++

Программирование на С++ (строки)

даны 2 предложения. Разбить их на подстроки и добавить в 3-ю строку без повторов
например,
1 строка= привет мир!
2 строка= привет работник?
3 строка= мир работник
 #include  
#include
#include
#include
#include
#include
using namespace std;
vector split(const string& line) {
istringstream iss(line);
vector words;
string word;
while (iss >> word) {
word = regex_replace(word, regex("[.?!)(,:]"), "");
words.push_back(word);
}
return words;
}
void join(string& dest, const vector& src, const vector& model) {
for (const auto& word : src) {
if (count(model.begin(), model.end(), word) == 1) {
if (!dest.empty()) dest += " ";
dest += word;
}
}
}
int main() {
string a, b;
getline(cin, a);
getline(cin, b);
const auto va = split(a);
const auto vb = split(b);
vector v = { va };
v.insert(v.end(), vb.begin(), vb.end());
string s;
join(s, va, v);
join(s, vb, v);
cout
*slipknot *
*slipknot *
52 755
Лучший ответ
Ильдар Талачев А есть способы попроще? не особо разбираюсь еще в С++
#include<stdio.h>
#include<wchar.h>
#include<locale.h>
#include<stdlib.h>
#define count 256 //кол-во слов массива
#define letter 512//кол-во букв массива
#define len 25//макс.длина слова в массиве

//функция сравнения слова с ранее
//сохранёнными в массиве словами:
int cmp(wchar_t **words, wchar_t *word, int n)
{
int res=0;
for(int i = 0; i < n; i++)
if(!wcscmp(words[i], word)) res=1;
return res;
}

int main()
{
                int wcount=0;
                wchar_t text[letter]={0},*pos, **words, *filter=L",;: .!?";
                words=(wchar_t**)malloc(count*sizeof(wchar_t*));
                if(!words) exit(1);//завершить работу
                for(int i = 0; i < count; i++)
                {
                words[i]=(wchar_t*)malloc(len*sizeof(wchar_t));
                if(!words[i]) exit(1);//завершить работу
                }

                setlocale(LC_ALL, "Russian");
                wprintf(L"Введите текст:\n");
                fgetws(text, sizeof(text), stdin);
                wchar_t *word=wcstok(text,filter,&pos);
                while(word!=NULL)
                {
                if(word==NULL) break;
                if(!cmp(words, word, wcount))
                wcscpy(words[wcount++], word);
                word=wcstok(NULL,filter,&pos);
                }

                wprintf(L"\nРезультат:\n");
                for(int i = 0; i < wcount; i++)
                wprintf(L"%ls ", words[i]);
system("pause");// пауза для Windows
                return 0;
}
Stereo ...
Stereo ...
37 945
Создай вектор из слов, удали дубликаты и выведи. Можешь вместо вектора использовать set. Для разбиения на слова используй split