Sanlover

Untitled

Dec 21st, 2021
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. #include <vector>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5.  
  6. int main()
  7. {
  8. size_t amount;
  9. int number;
  10. vector<int> elements;
  11. cout << "Enter the number you want to find in elements row = ";
  12. cin >> number;
  13. cout << "Enter amount of elements = ";
  14. cin >> amount;
  15. while (amount <= 0)
  16. {
  17. cout << endl << "Enter must be positive. Try again = ";
  18. cin >> amount;
  19. }
  20. elements.resize(amount);
  21.  
  22. bool isFound = false;
  23. size_t pos = 0, count = 1;
  24. cout << endl << "Enter elements:" << endl;
  25. cout << 0 << ") ";
  26. cin >> elements[0];
  27. for (size_t i = 1; i < amount; i++)
  28. {
  29. cout << i << ") ";
  30. cin >> elements[i];
  31. if (!isFound)
  32. {
  33. if (elements[i] >= elements[i - 1])
  34. {
  35. count++;
  36. if (count > 2)
  37. {
  38. pos = i - 2;
  39. isFound = true;
  40. }
  41. }
  42. else
  43. {
  44. count = 1;
  45. }
  46. }
  47. }
  48. if (!isFound) // Если не нашли по возрастанию, ищем по убыванию
  49. {
  50. pos = 0;
  51. count = 1;
  52. for (size_t i = 1; i < amount; i++)
  53. {
  54. if (!isFound)
  55. {
  56. if (elements[i] <= elements[i - 1])
  57. {
  58. count++;
  59. if (count > 2)
  60. {
  61. pos = i - 2;
  62. isFound = true;
  63. }
  64. }
  65. else
  66. {
  67. count = 1;
  68. }
  69. }
  70. }
  71. }
  72. if (isFound) // Если нашли по убыванию
  73. {
  74. isFound = false; // ищем число в последовательности
  75. for (size_t i = pos; i < amount - 1 && !isFound; i++)
  76. {
  77. if (elements[i] == number)
  78. {
  79. isFound = true;
  80. }
  81. if (elements[i] > elements[i + 1])
  82. {
  83. break;
  84. }
  85. }
  86. // Выводим позицию начала подпоследовательности и 1,если число в подпоследовательности нашлось
  87. // Подпоследовательность - любые 2+ уменьшающихся \ возрастающих подряд идущих числа
  88. cout << "Pos: " << pos << " , IsFound = ";
  89. if (isFound)
  90. {
  91. cout << "true";
  92. }
  93. else
  94. {
  95. cout << "false";
  96. }
  97. }
  98. else
  99. {
  100. cout << "Sorted subrow not found";
  101. }
  102. return 0;
  103. }
  104.  
Advertisement
Add Comment
Please, Sign In to add comment