using System;
namespace Lab_3_Amel
{
class Program
{
// Проверяет входящий массив на чередование чётности элементов.
// Возвращает -1 если закономерность порядка элементов "чётный, нечётный"
// или "нечётный, чётный" не нарушена, иначе индекс элемента на котором
// нарушается закономерность
static int Alternation(int[] array)
{
// если массив пустой то возвращаем "проверка пройдена"
if (array.Length == 0)
return -1;
// если массив состоит меньше чем из двух элементов сразу возвращаем индекс первого
if (array.Length < 2)
return 0;
// чётен ли первый элемент? и заодно признак чётности предыдущего элемента
bool even = array[0] % 2 == 0;
// идём по всем элементам массива кроме первого
for (int i = 1; i < array.Length; i++)
{
// чётность текущего элемента
bool parity = array[i] % 2 == 0;
// если чётность текущего элемента такая же как чётность предыдущего элемента
// то возвращаем индекс предыдущего, на нём как раз и нарушается закономерность
if (parity == even)
{
return i - 1;
}
// иначе запоминаем чётность текущего элемента на будущее
else
{
even = parity;
}
}
// массив пройдён полностью, закономерность не нарушена
return -1;
}
static void Main(string[] args)
{
int[] mas = { 1, 2, 3, 4 };
int[] mas1 = { 1, 2, 3, 5 };
// Проверка первого массива
int idx = Alternation(mas);
if (idx == -1)
Console.WriteLine("Массив №1 прошёл проверку. 0");
else
Console.WriteLine("Массив №1 не прошёл проверку. Индекс: {0}", idx);
Console.WriteLine("======================");
// Проверка второго массива
idx = Alternation(mas1);
if (idx == -1)
Console.WriteLine("Массив №1 прошёл проверку. 0");
else
Console.WriteLine("Массив №1 не прошёл проверку. Индекс: {0}", idx);
Console.WriteLine("======================");
Console.Read();
}
}
}