Ответы пользователя по тегу Массивы
  • Как правильно конвертировать массив?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Эх, вспомнил я первый курс универа...
    Я бы, наверное, сделал как-то так, учитывая, что это всё же учебное задание, если есть вопросы, велкам, отвечу.

    class Program
    {
        private const int MinArrayLength = 2;
        private const int MaxArrayLength = 20;
    
    
        private static int ReadInteger(string prompt)
        {
            while (true)
            {
                Console.Write(prompt);
                
                string input = Console.ReadLine();
    
                if (!int.TryParse(input, out int number))
                {
                    Console.WriteLine($"Значение {input} не является числом");
                    continue;
                }
    
                return number;
            }
        }
    
        private static int ReadArrayLength()
        {
            while (true)
            {
                var number = ReadInteger($"Введите размер массива от {MinArrayLength} до {MaxArrayLength}: ");
    
                if (number > MaxArrayLength || number < MinArrayLength)
                {
                    Console.WriteLine($"Число {number} лежит вне границ интервала [{MinArrayLength}..{MaxArrayLength}]");
                    continue;
                }
    
                return number;
            }
        }
    
        private static int[] ReadArray(int length)
        {
            while (true)
            {
                Console.Write($"Введите до {length} целых чисел через пробел: ");
    
                string input = Console.ReadLine();
                string[] entries = input.Split(' ', StringSplitOptions.RemoveEmptyEntries);
    
                if (entries.Length > length)
                {
                    Console.WriteLine($"Вы ввели более {length} чисел");
                    continue;
                }
    
                if (!TryParseIntegerArray(length, entries, out var array))
                    continue;
    
                return array;
            }
        }
    
        private static bool TryParseIntegerArray(int length, string[] strings, out int[] array)
        {
            array = new int[length];
    
            for (int i = 0; i < strings.Length; ++i)
            {
                if (!int.TryParse(strings[i], out int number))
                {
                    Console.WriteLine($"Строка {strings[i]} (позиция {i}) не является числом");
                    return false;
                }
    
                array[i] = number;
            }
    
            if (length > strings.Length)
            {
                Array.Clear(array, strings.Length, length - strings.Length);
            }
    
            return true;
        }
    
        private static int CountNumberOccurs(int[] array, int targetNumber)
        {
            int occursCount = 0;
            
            for (int i = 0; i < array.Length; ++i)
            {
                if (array[i] == targetNumber)
                    occursCount++;
            }
    
            return occursCount;
        }
    
    
        static void Main(string[] args)
        {
            int arrayLength = ReadArrayLength();
            int[] array = ReadArray(arrayLength);
            int targetNumber = ReadInteger("Введите целое число для поиска повторений: ");
    
            int occursCount = CountNumberOccurs(array, targetNumber);
    
            Console.WriteLine($"Количество вхождений числа {targetNumber} в массив: {occursCount}.");
            Console.WriteLine("Нажмите <ENTER> для выхода.");
            Console.ReadLine();
        }
    }
    Ответ написан
    1 комментарий