Загрузка данных


using System;

namespace Task16
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.OutputEncoding = System.Text.Encoding.UTF8;
            
            // Ввод размера массива
            Console.Write("Введите размер массива N: ");
            int N;
            while (!int.TryParse(Console.ReadLine(), out N) || N <= 0)
            {
                Console.Write("Ошибка! Введите положительное целое число: ");
            }

            double[] A = new double[N];
            
            // Ввод элементов массива
            Console.WriteLine($"\nВведите {N} элементов массива:");
            for (int i = 0; i < N; i++)
            {
                Console.Write($"A[{i}] = ");
                while (!double.TryParse(Console.ReadLine(), out A[i]))
                {
                    Console.Write("Ошибка! Введите число: ");
                }
            }

            // Вывод исходного массива
            Console.WriteLine("\nИсходный массив:");
            for (int i = 0; i < N; i++)
            {
                Console.Write($"{A[i]} ");
            }
            Console.WriteLine("\n");

            // ========== ЗАДАНИЕ 16 ==========
            Console.WriteLine("========== ЗАДАНИЕ 16 ==========");

            // 16а) Два положительных числа
            int countPosPair = 0;
            for (int i = 0; i < N - 1; i++)
            {
                if (A[i] > 0 && A[i + 1] > 0)
                    countPosPair++;
            }
            Console.WriteLine($"а) Количество соседств двух положительных чисел: {countPosPair}");

            // 16б) Два числа разного знака
            int countDiffSign = 0;
            for (int i = 0; i < N - 1; i++)
            {
                if ((A[i] > 0 && A[i + 1] < 0) || (A[i] < 0 && A[i + 1] > 0))
                    countDiffSign++;
            }
            Console.WriteLine($"б) Количество соседств двух чисел разного знака: {countDiffSign}");

            // 16в) Два числа одного знака, |первое| > |второе|
            int countSameSignAbs = 0;
            for (int i = 0; i < N - 1; i++)
            {
                bool sameSign = (A[i] > 0 && A[i + 1] > 0) || (A[i] < 0 && A[i + 1] < 0);
                if (sameSign && Math.Abs(A[i]) > Math.Abs(A[i + 1]))
                    countSameSignAbs++;
            }
            Console.WriteLine($"в) Количество соседств (один знак, |первое| > |второе|): {countSameSignAbs}");

            // 16г) Четное число и нечетное число с нечетным индексом
            int countEvenOddIndex = 0;
            for (int i = 0; i < N - 1; i++)
            {
                // Приводим к целым для проверки четности
                int firstInt = (int)A[i];
                int secondInt = (int)A[i + 1];
                
                // Проверка: первое четное, второе нечетное, и индекс второго элемента нечетный (считая с 1)
                bool firstEven = (firstInt % 2 == 0);
                bool secondOdd = (secondInt % 2 != 0);
                bool secondIndexOdd = ((i + 1) % 2 != 0); // индексация с 1
                
                if (firstEven && secondOdd && secondIndexOdd)
                    countEvenOddIndex++;
            }
            Console.WriteLine($"г) Количество соседств (четное + нечетное число с нечетным индексом): {countEvenOddIndex}");

            Console.WriteLine("\nНажмите любую клавишу для выхода...");
            Console.ReadKey();
        }
    }
}