Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vector>
- #include <iostream>
- using namespace std;
- int main()
- {
- size_t amount;
- int number;
- vector<int> elements;
- cout << "Enter the number you want to find in elements row = ";
- cin >> number;
- cout << "Enter amount of elements = ";
- cin >> amount;
- while (amount <= 0)
- {
- cout << endl << "Enter must be positive. Try again = ";
- cin >> amount;
- }
- elements.resize(amount);
- bool isFound = false;
- size_t pos = 0, count = 1;
- cout << endl << "Enter elements:" << endl;
- cout << 0 << ") ";
- cin >> elements[0];
- for (size_t i = 1; i < amount; i++)
- {
- cout << i << ") ";
- cin >> elements[i];
- if (!isFound)
- {
- if (elements[i] >= elements[i - 1])
- {
- count++;
- if (count > 2)
- {
- pos = i - 2;
- isFound = true;
- }
- }
- else
- {
- count = 1;
- }
- }
- }
- if (!isFound) // Если не нашли по возрастанию, ищем по убыванию
- {
- pos = 0;
- count = 1;
- for (size_t i = 1; i < amount; i++)
- {
- if (!isFound)
- {
- if (elements[i] <= elements[i - 1])
- {
- count++;
- if (count > 2)
- {
- pos = i - 2;
- isFound = true;
- }
- }
- else
- {
- count = 1;
- }
- }
- }
- }
- if (isFound) // Если нашли по убыванию
- {
- isFound = false; // ищем число в последовательности
- for (size_t i = pos; i < amount - 1 && !isFound; i++)
- {
- if (elements[i] == number)
- {
- isFound = true;
- }
- if (elements[i] > elements[i + 1])
- {
- break;
- }
- }
- // Выводим позицию начала подпоследовательности и 1,если число в подпоследовательности нашлось
- // Подпоследовательность - любые 2+ уменьшающихся \ возрастающих подряд идущих числа
- cout << "Pos: " << pos << " , IsFound = ";
- if (isFound)
- {
- cout << "true";
- }
- else
- {
- cout << "false";
- }
- }
- else
- {
- cout << "Sorted subrow not found";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment