fork download
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. char text[] = {"Хороши русские леса! Смолою пахнет сосновый бор. Под самыми тучами шумят \
  9. зеленые вершины, метут синеву неба. Точно белые красавицы глядят в воду \
  10. кудрявые березки. На залитых солнцем полянах раскинулись дубы. Каждым \
  11. листочком дрожит осинка. Яркий осенний наряд у клена. Высокие стройные \
  12. ели вытянули острые макушки. В тенистых дубравах поселились певчие птицы.\
  13. Тихие речушки протекают в лесной глуши..."};
  14.  
  15. char const* wordArray[] = {"солнцем", "полянах", "раскинулись", "дубы"};
  16. // setlocale(LC_ALL, "rus"); // раскоментировать, если не правильно отображает русские буквы
  17.  
  18. char const* pDelimiter = {" ,.!?:;"};
  19.  
  20. bool its_ok = false;
  21. char * pWord = nullptr;
  22.  
  23.  
  24. pWord = strtok(text, pDelimiter);
  25.  
  26. while(pWord)
  27. {
  28. static int i = 0; // static только для того что бы i = 0 не обнулялась на каждой итерации цикла,
  29. if(strcmp(pWord, wordArray[i]) == 0) // либо переменную i вынести за пределы цикла, тогда без static можно
  30. {
  31. if(i == 3) // три в данном случае это количество слов в словосочетании ее можно как нибудь через const int оформить
  32. {
  33. its_ok = true;
  34. break;
  35. }
  36. ++i;
  37. }
  38. else
  39. {
  40. i = 0;
  41. if(strcmp(pWord, wordArray[i]) == 0)
  42. {
  43. ++i; //на тот случай если каое нибудь второе слово не совпало а текущее слово равно первому
  44. }
  45. }
  46. pWord = strtok(nullptr, pDelimiter);
  47. }
  48.  
  49. std::cout << (its_ok? "true" : "false") << "\n";
  50.  
  51. system("pause");
  52. return 0;
  53. }
  54.  
Success #stdin #stdout #stderr 0s 4352KB
stdin
Standard input is empty
stdout
true
stderr
sh: 1: pause: not found