Учу c++. Не могу решить задачу. Кто хорошо знает c++ помогите пожалуйста

  1. Определить, является ли данная последовательность целых чисел убывающей или возрастающей (во избежание лишних проверок использовать оператор break). В массиве 10 элементов, ввод производить вручную, через консоль

при вводе чисел 4 5 4 он выдает последовательность целых чисел возрастающая

#include <iostream>
using namespace std;
int main() {
    res:
    setlocale(LC_ALL, "ru");
    const int N = 3;
    int arr[N];
    bool increasing =true, decreasing=true;
    // Вводим элементы массива
    cout << "Введите 10 целых чисел: ";
    for (int i = 0; i < N; i++) {
        cin >> arr[i];
        if (arr[i] == arr[i - 1]) {
            cout << "Массив содержит одинаковые числа.\n";
            goto res;
        }
        
    }
    // Проверяем, является ли последовательность возрастающей или убывающей
    for (int i = 1; i < 3; i++) {

        if (arr[i] > arr[i - 1]) {
            decreasing = false;
            break;
        }
        else if (arr[i] < arr[i - 1]) {
            increasing = false;
        }
        if (!increasing && !decreasing) {
            cout << "Последовательность не является ни возрастающей, ни убывающей." << endl;
            break;
        }
    }
    // Выводим результат
    if (increasing) {
        cout << "Последовательность является возрастающей.\n";
    }
    else if (decreasing) {
        cout << "Последовательность является убывающей.\n";
    }
    goto res;
    return 0;
}

Ответы (1 шт):

Автор решения: MBo

Как вариант

int flag = 0; 
for (int i = 1; i < n; i++) {
    if (arr[i] == arr[i - 1]) {
        flag |= 1;
        break;
    }
    else if (arr[i] < arr[i - 1]) {
        flag |= 2;
        if (flag != 2) break;
    }
    else {
        flag |= 4;
        if (flag != 4) break;
    }
}
if (flag==2)
   убывающая 
else if (flag==4)
   возрастающая
else
   ни то, ни сё.

Дополнение:

Есть такое важное понятие - "неубывающая" (и "невозрастающая") последовательность, 4 4 5 именно такая. И есть "строго возрастающая" - тут 4 4 5 не подходит.

В правильной формулировке должен был присутствовать один из этих терминов.

Однако задача решается и для неубывающей и невозрастающей последовательности - только проверки будут другими - например, так:

bool increasing = false, decreasing=false;
 for (int i = 1; i < n; i++) {
        if (arr[i] < arr[i - 1]) {
           decreasing = true;
           if (increasing) break;
    }
    else if (arr[i] > arr[i - 1]) {
           increasing = true;
           if (decreasing) break;
    }
}
if ((increasing && decreasing) || !(increasing || decreasing)) 
   ни то, ни сё.
else if (increasing)
   возрастающая
else if (increasing)
   убывающая
→ Ссылка