даны 2 предложения. Разбить их на подстроки и добавить в 3-ю строку без повторов
например,
1 строка= привет мир!
2 строка= привет работник?
3 строка= мир работник
C/C++
Программирование на С++ (строки)
#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
Ильдар Талачев
А есть способы попроще? не особо разбираюсь еще в С++
#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;
}
#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;
}

Создай вектор из слов, удали дубликаты и выведи. Можешь вместо вектора использовать set. Для разбиения на слова используй split
Похожие вопросы
- ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ СТРОК C++
- Программирование C++. Задание на строки и символы
- Задача по работе со строками на языке программировании c++
- Программирование на С++
- Программирование на C++
- Как реализовать поиск похожей строки в базе данных?
- Найти максимальный элементы в строке матрицы
- Как начать изучать программирование?
- Доброго дня! Хочу сменить сферу деятельности . Заинтересовал вариант программирования .
- Программирование на C++