Проверить упорядочен ли заданный массив по убыванию
По возрастанию я проверил, а вот по убыванию не пойму как правильно сделать.
int m = 0;
int g = 0;
int d = 0;
bool up = false;
bool dn = false;
Console.Write("Введите колличество элементов в массиве ");
while (!int.TryParse(Console.ReadLine(), out m) || m <= 0)
Console.Write("Необходимо ввести целое число!\nВведите число: ");
int[] a = new int[m];
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine($"Введите элемент массива по индексом {i}");
while (!int.TryParse(Console.ReadLine(), out m) || m <= 0)
Console.Write("Необходимо ввести целое число!\nВведите число: ");
a[i] = m;
if (g < m)
{
g = m;
up = true;
}
else up = false;
}
//Array.Reverse(a);
//for (int i = 0; i < a.Length; i++)
//{
//}
if (up)
Console.WriteLine($"возростатет");
//if (dn)
// Console.WriteLine($"УБВАЕТ");
}
}
}
Ответы (1 шт):
Автор решения: Павел Ериков
→ Ссылка
Проще сказать, что изначально последовательность возрастающая, и потом доказать обратное, т.к. для этого достаточно всего лишь найти 2 соседних элемента, которые a[i - 1] >= a[i].
Аналогично с убывающей, сначала говорим, что последовательность убывает и в процессе проверки пытаемся доказать обратное, найдя два соседних элемента, которые a[i - 1] <= a[i]
Вот пример:
//Доказываем, что последовательность не возрастающая
if (i > 0 && a[i - 1] >= a[i])
up = false;
//И так же не убывающая
if (i > 0 && a[i - 1] <= a[i])
dn = false;