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

Если элементов с минимальным значением несколько, должны быть выведены индексы всех этих элементов

14.07.2019, 14:19. Показов 1870. Ответов 3
Метки нет (Все метки)

Добрый день, помогите решить задачу:

Напишите программу, в которой создаётся массив и заполняется случайными числами. Массив отображается в консольном окне. В этом массиве необходимо определить элемент с минимальным значением. В частности, программа должна вывести значение элемента с минимальным значением и индекс этого элемента. Если элементов с минимальным значением несколько, должны быть выведены индексы всех этих элементов.

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

Мой код:

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
  static void Main(string[] args)
        {
 
            Random r = new Random();
            int size, k=10, minimal=k, index=0, value;
 
            Console.WriteLine("Введите размер массива");
            size = Convert.ToInt32(Console.ReadLine());
            int[] nums = new int[size];
 
            Console.WriteLine("Сгенерированный массив");
            for (int i = 0; i < nums.Length; i++)
            {
                nums[i] = r.Next(k) + 1;
                if (nums[i] < minimal)
                {
                    minimal = nums[i];
                }
                Console.Write(nums[i] + " ");
            }
 
            //Поиск наименьшего элемента в массиве:
            value = nums[index];
            for(int i=1; i < nums.Length; i++)
            {
                if(nums[i]< value)
                {
                    value = nums[i];
                    index = i;
                }
            }
            Console.WriteLine($"\nНаименьший элемент массива {value}\nИндекс наименьшего элемента {index}");
            Console.ReadKey();
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2019, 14:19
Ответы с готовыми решениями:

Дан массив.найти номера всех элементов:с минимальным значением,с максимальным значением.
Привет всем!!!помогите решить задачи на С#. 1.Дан массив.найти номера всех элементов:с минимальным...

Среди элементов массива найти индексы всех таких, которые могут быть получены cуммированием двух элементов
Вот задачка помогите, ЛЮДИ Среди элементов массива найти индексы всех таких, которые могут быть...

Найти индексы всех таких элементов, которые могут быть получены суммированием двух элементов этого же массива
Среди элементов массива найти индексы всех таких, которые могут быть получены суммированием двух...

Указать индексы всех элементов с наибольшим значением
Помогите плиз решить задачу с Абрамова(388). В данной квадратной целочисленной матрице порядка 17...

3
Модератор
Эксперт .NET
10039 / 7069 / 1946
Регистрация: 21.04.2018
Сообщений: 21,188
Записей в блоге: 2
14.07.2019, 15:19 2
Лучший ответ Сообщение было отмечено EskinTwinkle как решение

Решение

Цитата Сообщение от EskinTwinkle Посмотреть сообщение
В настоящий момент я не могу придумать, как проверить что элементов с минимальным значением несколько.
Задачу лучше выполнить в два этапа: на первом выполняется поиск минимального значения, на втором выводятся индексы элементов со значением равным найденному.
C#
1
2
3
4
int min = nums.Min();
for (int i = 0; i < nums.Lenght; i++)
    if (nums[i] == min)
       Console.WriteLine(i);
1
1 / 1 / 0
Регистрация: 14.07.2019
Сообщений: 24
14.07.2019, 15:28  [ТС] 3
Нашёл решение на примере одной из ниже приложенных задач. Тему можно закрывать.

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
        static void Main(string[] args)
        {
            int size, min = int.MaxValue;
            Random r = new Random();
 
            Console.WriteLine("Введите размер массива");
            size = Convert.ToInt32(Console.ReadLine());
            int[] nums = new int[size];
 
            //Заполнение и отображение массива:
            for (int k=0; k < nums.Length; k++)
            {
                nums[k] = r.Next(1,101);
                Console.Write(nums[k] + " ");
            }
 
            for (int i = 0; i < nums.Length; i++)
            {
                if (min > nums[i])
                    min = nums[i];
            }
 
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] == min)
                    Console.WriteLine("Минимальный элемент: {0}, Позиция: {1}", nums[i], i + 1);
            }
            Console.ReadKey();
0
Модератор
Эксперт .NET
10039 / 7069 / 1946
Регистрация: 21.04.2018
Сообщений: 21,188
Записей в блоге: 2
14.07.2019, 16:23 4
EskinTwinkle!
Почитайте SOLID. Надо разделять код на участки разные по функционалу.
Допустим, в вашем коде заполнение массива, вывод полученных и поиск минимального элемента производится в одном цикле. Можно же сюда добавить и создание коллекции индексов минимальных элементов.
Но МОЖНО так сделать, не означает, что ТАК И НАДО делать.

Разный функционал должен быть разделён по разным участкам кода. Может на простых задачах это и непонятно зачем нужно. Но в сложном большом коде игнорирование этого правила очень сильно запутывает код, делает его малопригодным к модернизации и, как следствие, появляется большая вероятность трудно находимых багов.

Допустим, в вашем коде
C#
1
2
3
4
5
6
7
8
9
10
                /// Создание массива со случайными элементами от 1 до 10 
                int[] nums = Enumerable.Range(1, size).Select(x => r.Next(1, 11)).ToArray();
 
                /// Вывод полученного массива
                Console.WriteLine(string.Join(", ", nums));
 
                /// Получение минимального значения и вывод индексов 
                /// элементов с минимальным значением
                int min = nums.Min();
                Console.WriteLine(string.Join(", ", nums.Select((x, ind) => (x, ind)).Where(x => x.x == min).Select(x => x.ind)));
Добавлено через 8 минут
P.S. Второй ваш код уже норм.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2019, 16:23

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Отметить индексы всех элементов матрицы с наибольшим значением
В данной квадратной матрицы целых чисел порядка n отметить индексы всех элементов с наибольшим...

На экран вывести индексы всех элементов массива с заданным значением
5. Создайте одномерный массив, в который пользователь введет с клавиатуры значения элементов....

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

В данной квадратной матрице порядка 17 указать индексы всех элементов с наименьшим значением
В данной квадратной матрице порядка 17 указать индексы всех элементов с наименьшим значением


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

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

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