Нахождение номера первого отрицательного элемента массива, делящегося на 5 с остатком 2 - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Я новичек, написал код, но по нему есть пара вопросов. Код решает следующие задачи: Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,20]. 1. Найти сумму элементов, имеющих нечетные индексы. 2. Подсчитать количество элементов массива, значения которых больше заданного числа А и кратных 5. 3. Найти номер первого отрицательного элемента, делящегося на 5 с остатком 2. Но при решении 3ей задачи возникает проблема, индексы чисел -7, -12, -17 находятся корректно, но при наличии в массиве числа -2, его индекс тоже находиться, чего быть не должно.(строки 99-110 в коде) Подскажите пожалуйста, как это исправить. И второй вопрос, при вводе числа А, первоначальный массив меняется, и все задачи пересчитываются под новый массив, можно ли сделать так, чтобы массив не менялся при вводе А.
using System;
 
namespace Test
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // считать с консоли кол-во чисел в массиве
            int cntOfNumbers = GetUserInput("количество чисел в массиве");
 
            // массив чисел
            var numArray = new int[cntOfNumbers];
            // Заполнить массив случайным образом числами из промежутка [-10,20]
            FillArray(numArray, cntOfNumbers, -10, 20);
 
            Console.WriteLine("Содержимое массива: " + string.Join(", ", numArray));
 
            /// Задание 1

            Console.WriteLine(
                "Сумма нечетных элементов: {0}",
                GetSum(numArray)
            );
 
            /// Задание 2
            // считать с консоли число А из задания 2
            int maxAbsNumber = GetUserInput("число А");
            Console.WriteLine(
                "Количество элементов, значения которых кратны 5 и больше заданного числа: {0}",
                GetCount(numArray, maxAbsNumber)
            );
 
            /// Задание 3
            int? crossIndex = GetFirstIndex(numArray);
            Console.WriteLine(
                "Индекс первого отрицательного числа делящегося на 5 с отатком 2: {0}",
                crossIndex == null ? "не найден" : crossIndex.ToString()
            );
 
        }
 
        private static int GetUserInput(string description)
        {
            int result = 0;
            Console.WriteLine("Введите " + description);
            while (!Int32.TryParse(Console.ReadLine(), out result))
            {
                Console.WriteLine("Введено некорректное число!");
                Console.WriteLine("Введите " + description);
            }
 
            return result;
        }
 
        // Заполняет массив числами
        private static void FillArray(int[] array, int count, int min, int max)
        {
            var rnd = new Random();
            for (var i = 0; i < count; i++)
            {
                int newNum = rnd.Next(min, max);
                array[i] = newNum;
            }
        }
 
        // Возвращает сумму нечетных элементов из массива
        private static int GetSum(int[] array)
        {
            int sum = 0;
            foreach (int num in array)
            {
                if (num % 2 == 0) // четные пропускаются
                    continue;
 
                sum += num;
            }
 
            return sum;
        }
 
        // Возвращает количество элементов, значения которых кратны 5 и превосходят заданное число А
        private static int GetCount(int[] array, int A)
        {
            int count = 0;
            
            foreach (int num in array)
            {
                if (num < A || num % 5 != 0 ) // не кратные 5 и не превосходящие А пропускаются
                    continue;
 
                count++;
            }
 
            return count;
        }
 
        // Возвращает индекс первого отрицательного элемента делящегося на 5 с остатком 2
        private static int? GetFirstIndex(int[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                if (array [i] < 0 && array [i] % 5 == -2) 
                {
                    return i + 1;
                }
            }
            return 0;
        }
        }
    }

Решение задачи: «Нахождение номера первого отрицательного элемента массива, делящегося на 5 с остатком 2»

textual
Листинг программы
if (array [i] < -2 && array [i] % 5 == -2)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.556 из 5
Похожие ответы