Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
mrdi
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 9
1

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

18.11.2016, 21:13. Просмотров 365. Ответов 1
Метки нет (Все метки)

Здравствуйте! Я новичек, написал код, но по нему есть пара вопросов. Код решает следующие задачи: Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,20]. 1. Найти сумму элементов, имеющих нечетные индексы. 2. Подсчитать количество элементов массива, значения которых больше заданного числа А и кратных 5. 3. Найти номер первого отрицательного элемента, делящегося на 5 с остатком 2.
Но при решении 3ей задачи возникает проблема, индексы чисел -7, -12, -17 находятся корректно, но при наличии в массиве числа -2, его индекс тоже находиться, чего быть не должно.(строки 99-110 в коде) Подскажите пожалуйста, как это исправить.
И второй вопрос, при вводе числа А, первоначальный массив меняется, и все задачи пересчитываются под новый массив, можно ли сделать так, чтобы массив не менялся при вводе А.
Код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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;
        }
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2016, 21:13
Ответы с готовыми решениями:

Найти номер первого отрицательного элемента, делящегося на 5 с остатком 2
Дан массив целых чисел, состоящий из 15 элементов. Заполнить его с клавиатуры....

Нахождение второго отрицательного элемента массива
using System; using System.Collections.Generic; using System.Linq; using...

Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента
Здравствуйте уважаемые товарищи программисты, вот у меня такое задание: В...

Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента
Добрый день. Неправильно считает сумму,в чём может быть проблема? const int...

Вычислить сумму модулей элементов массива, расположенных после первого отрицательного элемента
В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов, ...

1
Даценд
Модератор
Эксперт .NET
4163 / 3942 / 2611
Регистрация: 20.04.2015
Сообщений: 7,149
18.11.2016, 21:32 2
Цитата Сообщение от mrdi Посмотреть сообщение
но при наличии в массиве числа -2, его индекс тоже находиться, чего быть не должно
Я считаю, что так и должно быть, но если нужно, то
C#
1
if (array [i] < -2 && array [i] % 5 == -2)
Цитата Сообщение от mrdi Посмотреть сообщение
при вводе числа А, первоначальный массив меняется
Что-то не вижу такого изменения.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2016, 21:32

Для каждой строки ступенчатого массива найти номер первого отрицательного элемента
Дан массив размером n×n, элементы которого целые числа.Для каждой строки найти...

Вычислить сумму модулей элементов массива, расположенных после первого отрицательного элемента
В одномерном массиве,состоящем из n вещественных элементов,вычислить: 1)номер...

Найти порядковые номера первого нулевого элемента для каждого массива
Даны два одномерных массива A(N) и B(M) целых чисел. Составить блок-схему...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru