С++

напечатать те слова, которые встречается в каждом из двух заданных предложений

А поконкретнее можно обьяснить, что Вы хотите?
Скажите ход мыслей, уровень знаний и т.д.

Есть две строки, введеные с клавиатуры, разделить строки на слова и вывести те, которые есть и в первом и во втором предложении

Doctor Who,
это же просто! Вот алгоритм:
1.Обьявляете string-переменные(слова).
2. Инициализируете переменные. Можно двумя способами:
1) string word = "...";
2)

cout << "Word: ";
cin >> word;

2.Делаете разветвление.

if(word1 == word2) {
cout << "word1: " << word1 << endl;
cout << "word2: " << word2 << endl;
} else {
// Your action
}

Примечание:
Я над кодом сильно не разбиралась. Пока что нет времени. Это приблизительно.
Удачи!

Кое-что забыла сказать:

#include <string>

Подробно об этом(на English):
Link

//g++  5.4.0
#include <iostream>
#include <string>
#include <algorithm>
#include <set>
#include <vector>
#include <iterator>
#include <regex>

using set_value_type = std::pair<std::string::const_iterator, std::string::const_iterator>;

struct set_comparator
{
    bool operator()(
            const set_value_type &f,
            const set_value_type &s
        )
    {
        return std::lexicographical_compare(f.first, f.second, s.first, s.second);
    }
};


using set_type = std::set<set_value_type, set_comparator>;



set_type get_words_iterators(const std::string &s)
{
    using reg_iterator_t = std::regex_iterator<std::string::const_iterator>;
    std::regex reg("\\w+");    
    reg_iterator_t begin(s.begin(), s.end(), reg);
    reg_iterator_t end;
    set_type result;
    for (; begin != end; ++begin) {
        std::string::const_iterator word_begin = s.begin() + begin->position();
        result.insert({word_begin, word_begin + begin->length()});
    }
    return result;
}


int main ()
{    
    std::string first_string ("this is first line");
    std::string second_string ("this is second line");

    set_type s1 = get_words_iterators(first_string);
    set_type s2 = get_words_iterators(second_string);

    std::vector<set_value_type> intersect;
    intersect.reserve(std::max(s1.size(), s2.size()));    
    std::set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(), std::back_inserter(intersect), set_comparator());


    for (auto &value_pair: intersect) {
        std::cout << std::string(value_pair.first, value_pair.second) << std::endl;
    }
}

http://rextester.com/AGY47313

MasterOfAlteran'y.
Здравствуйте!
Обьясните мне, please, вот что:
1) Суть, значение и функции этих заголовков:

#include <algorithm>
#include <set>
#include <vector>
#include <iterator>
#include <regex>
#include <ccerno>
#include <cassert>
#include <cctype>
#include <iomanip>

(если будет возможно). Я просто хочу больше узнать об инклудах.
2) Почему обязательно такой «умный» код? Почему нельзя так, как показал Copper?
Заранее огромное спасибо!
Assert.

Почему нельзя так, как показал Copper?

Можно. Делайте. Потом покажете. Оценим.

Почему обязательно такой «умный» код?

А зачем я буду писать то, что не интересно мне? Мне было интересно решить задачу так. Я остался доволен результатом, хотя здесь много чего нужно дорабатывать.

Я просто хочу больше узнать об инклудах.

Да тут особо и знать нечего. #include просто пихает вместо себя указанный файл. Их точное содержимое зависит от реализации, однако они должны удовлетворять требованиям стандарта языка.

/*
Большая часть стандартных алгоритмов объявлена здесь:
*/

#include <algorithm> 
/*
Ассоциативный упорядоченный контейнер set.
Реализуется, как правило, с помощью RB или AVL дерева.
Используется как упорядоченное множество уникальных значений.
Объявлен здесь:
*/
#include <set> 
/*
Последовательный, динамически расширяющийся контейнер vector объявлен здесь:
*/
#include <vector>
/*
Многое для работы с итераторами, например, 
обертка std::back_inserter, 
вставляющая элемент в конец контейнера:
*/
#include <iterator>
/*
Регулярные выражения:
*/
#include <regex>
/*
В стандартной библиотеки такого нет:
*/
#include <ccerno>
/*
Здесь простенький C'шный assert:
*/
#include <cassert>
/*
А в cctype лежат разнообразные
функции для определения какой группе принадлежать символы, например, isdigit определяет, является ли переданный символ цифрой. В силу того, что C++ не умеет ходить в Unicode, данный функции почти бесполезны для работы с символами, отличными от основного набора ASCII [0-128)
*/
#include <cctype>
/*
Дополнительные манипуляторы ввода/вывода:
*/
#include <iomanip>

Подробнее: http://en.cppreference.com/w/cpp/header

lexicographical_compare()?

Algorithms library -> Sorting and related operations -> Lexicographical comparison

Где в стандарте обьясняется

Там нет объяснений. Там спецификация.

добрый день, подскажите пожалуйста: где можно более подробно изучить терминологию С++, и терминологию комманд в данной программе? заранее спасибо.

include <iostream>

using namespace std;
int main()
{
порекомендуйте тогда с чего начать или с какой книги? Поскольку даже в гугле толко не могу найти....масса литературы и одна заумнее другой, а смысл уловить не могу((( // ...
}

масса литературы и одна заумнее другой

Выбрал самый сложный язык, но хочу чтобы было легко? )))

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.