• Как исправить программу на языку C#?

    @pfemidi
    Тут могло бы быть краткое описание меня
    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();
            }
        }
    }
    Ответ написан
    Комментировать
  • Как исправить программу на языку C#?

    MrMureno
    @MrMureno
    VR for all
    sashka_amelin32, бро если делая лабораторку по простеишим массивам и ты "долго уже сижу и не могу понять в чём проблема"

    то или плохо высыпаешься или плохо понимаешь что вообще делаешь.

    а уж ерничать когда тебе говорят что решать такое за тебя не особо хотят) тем более не надо))

    а по факту смотрите в отладчике очередность выполнения команд)

    if (i == mas.Length)
                            Console.WriteLine("Массив №1 прошёл проверку. 0");

    отладчиком дойдите до этого места . посмотрите чему равно i и mas.Length
    да и в принципе, пошагово отладчиком и увидете, где сбоит, не заходит в условие или перескакивает.

    удачи в обучении)
    Ответ написан
    4 комментария