Учу c++. Не могу решить задачу. Кто хорошо знает c++ помогите пожалуйста
- Определить, является ли данная последовательность целых чисел убывающей или возрастающей (во избежание лишних проверок использовать оператор 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)
убывающая