Нахождение номера первого отрицательного элемента массива, делящегося на 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д