#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    char text[] = {"Хороши русские леса! Смолою пахнет сосновый бор. Под самыми тучами шумят \
        зеленые вершины, метут синеву неба. Точно белые красавицы глядят в воду \
        кудрявые березки. На залитых солнцем полянах раскинулись дубы. Каждым \
        листочком дрожит осинка. Яркий осенний наряд у клена. Высокие стройные \
        ели вытянули острые макушки. В тенистых дубравах поселились певчие птицы.\
        Тихие речушки протекают в лесной глуши..."};

    char const* wordArray[] = {"солнцем", "полянах", "раскинулись", "дубы"};
//    setlocale(LC_ALL, "rus"); // раскоментировать, если не правильно отображает русские буквы

    char const* pDelimiter = {" ,.!?:;"};

    bool its_ok = false;
    char * pWord = nullptr;


    pWord = strtok(text, pDelimiter);

    while(pWord)
    {
        static int i = 0;   // static только для того что бы i = 0 не обнулялась на каждой итерации цикла,
        if(strcmp(pWord, wordArray[i]) == 0) //  либо переменную i вынести за пределы цикла, тогда без static можно
        {
            if(i == 3) // три в данном случае это количество слов в словосочетании ее можно как нибудь через const int оформить
            {
                its_ok = true;
                break;
            }
            ++i;
        }
        else
        {
            i = 0;
            if(strcmp(pWord, wordArray[i]) == 0)
            {
                ++i; //на тот случай если каое нибудь второе слово не совпало а текущее слово равно первому
            }
        }
        pWord = strtok(nullptr, pDelimiter);
    }

    std::cout << (its_ok? "true" : "false") << "\n";

    system("pause");
    return 0;
}
