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