Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/55: Рейтинг темы: голосов - 55, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 07.06.2016
Сообщений: 75

Вывести часть элементов массива на консоль

24.07.2019, 11:20. Показов 11096. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые форумчане.
Вопрос такой:
Дан массив случайных чисел от 1 до 10
После сортировки массива нужно вывести на консоль пять первых элементов отсортированного массива, с условием, что если, среди элементов массива от 1 до 10 будут числа повторятся с первыми пятью то вывести и эти числа тоже.

то есть например
Исходный массив: 1,5,5,8,9,1,6,4,7,7
Отсортированный массив: 1,4,5,5,6,7,7,8,9

Результат: 1,4,5,5,6

или (в противном случае)
Исходный массив: 1,5,5,8,9,1,6,4,6,7
Отсортированный массив: 1,4,5,5,6,6,7,8,9

Результат: 1,4,5,5,6,6
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.07.2019, 11:20
Ответы с готовыми решениями:

Как вывести элементы массива в консоль
как сделать чтоб элементы массива можно было ввести в консоли?int mas = { 1, 2, 5, 78, 2, 34, 234, 11, 9, 234, 0,234 }; ...

Как вывести элемент массива на консоль
int x ={ 1, 2, 3 , 4}; for (int i = 1; i <= 3; i++) { x = i; Console.WriteLine(x); } Помогите пожалуйста, у меня после...

Вывести в консоль все максимальные числа массива
Нужно в данном коде вывести в консоль все max числа массива ,а не одно.Как дописать код? using System; using...

15
 Аватар для Immo
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
24.07.2019, 11:31
C#
1
2
int[] arr = { 1, 5, 5, 8, 9, 1, 6, 4, 7, 7 };
Console.WriteLine(string.Join(" ", arr.OrderBy(x => x).Take(5)));
1
1 / 1 / 0
Регистрация: 07.06.2016
Сообщений: 75
24.07.2019, 11:47  [ТС]
Спасибо, но В таком случае он всегда выводит только пять первых значений. А если какие-либо значения из этих пяти есть в оставшихся элементах как вывести их на консоль?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,113
Записей в блоге: 2
24.07.2019, 15:05
Лучший ответ Сообщение было отмечено Элд Хасп как решение

Решение

Цитата Сообщение от Free1 Посмотреть сообщение
В таком случае он всегда выводит только пять первых значений
C#
1
2
3
4
                int[] arr = { 1, 5, 5, 8, 9, 1, 6, 4, 7, 7 };
                var arrGroup = arr.GroupBy(x => x);
                var arrGroupSort5 = arrGroup.OrderBy(x => x.Key).Take(5);
                Console.WriteLine(string.Join(", ", arrGroupSort5.Select(x => string.Join(", ", x))));
1
1 / 1 / 0
Регистрация: 07.06.2016
Сообщений: 75
24.07.2019, 15:31  [ТС]
А можете пояснить по коду что такое x и по этим методам вкратце объяснить как они работают (GroupBy, OrderBy, Key, Take, Join и Select? Я просто еще с массивами новичок совсем. с такими методами еще не сталкивался.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,113
Записей в блоге: 2
24.07.2019, 15:44
Лучший ответ Сообщение было отмечено Элд Хасп как решение

Решение

Цитата Сообщение от Free1 Посмотреть сообщение
А можете пояснить по коду что такое x и по этим методам вкратце объяснить как они работают (GroupBy, OrderBy, Key, Take, Join и Select? Я просто еще с массивами новичок совсем. с такими методами еще не сталкивался.
Это LINQ.
x переменная которой поочерёдно присваиваются все элементы последовательности. Имя может быть любым.
GroupBy - группировка по значению ключа. Ключ вычисляется выражением в скобках. В данном случае ключ это сам элемент
Take - выбирает первые элементы последовательности
Key после группировки - значение ключа группы
string.Join - статический метод типа string преобразующий в строку элементы последовательности с заданным разделителем. В данном случае разделитель ", "
Select - преобразует элементы последовательности по указанному выражению
1
2 / 2 / 0
Регистрация: 24.07.2019
Сообщений: 11
24.07.2019, 15:53
Как вариант
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  int[] arr = { 1, 5, 5, 8, 9, 1, 6, 4, 7, 7 };
             List<int> asdf = new List<int>();            
             Array.Sort(arr);
             asdf.Add(arr[0]);
            
             for (int i=0; i<arr.Length-1; i++)
             {                        
                     if (arr[i+1] != arr[i])
                     {
                         asdf.Add(arr[i+1]);            
                     }                    
             }
             
             for (int i=0; i<asdf.Count; i++)
             {
                 Console.Write($"{ asdf[i]}, ");
             }
2
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,113
Записей в блоге: 2
24.07.2019, 16:35
Лучший ответ Сообщение было отмечено Элд Хасп как решение

Решение

Цитата Сообщение от АндрейМАС Посмотреть сообщение
Как вариант
Список List<int> asdf и один цикл избыточны
C#
1
2
3
4
5
6
7
8
9
10
11
12
        int[] arr = { 1, 5, 5, 8, 9, 1, 6, 4, 7, 7 };
        Array.Sort(arr);
 
        Console.Write(arr[0]);
        int count = 1;
 
        for (int i = 1; i < arr.Length; i++)
        {
            if (arr[i - 1] != arr[i] && (++count) > 5)
                break;
            Console.Write(", " + arr[i]);
        }
2
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
24.07.2019, 17:07
все проще. мне кажется. Ваше задание можно перефразировать так: Вывести все первые члены отсортированной последовательности, которые не превышают по значению пятый элемент.
Допустим, если у вас уже все отсортировано, то:
C#
1
2
3
4
            int point = 5; //число первых элементов
            int[] arr = { 1, 5, 5, 5, 6, 6, 6, 9, 20, 34, 55 };
            for (int i = 0; i < arr.Length && (arr.Length < point || arr[i] <= arr[point - 1]); i++)
                Console.WriteLine(arr[i]);
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,113
Записей в блоге: 2
24.07.2019, 17:24
Цитата Сообщение от Toros1992 Посмотреть сообщение
Ваше задание можно перефразировать так: Вывести все первые члены отсортированной последовательности, которые не превышают по значению пятый элемент.
Нет.
Вы неправильно поняли задание.
Надо:
1) Отсортировать заданный массив
2) Вывести первые пять по значению (не по индексу!) элементы

В вашем примере массива надо получить 1, 5, 5, 5, 6, 6, 6, 9, 20
1
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
24.07.2019, 17:28
Элд Хасп, Возможно. Тогда вариант с группировкой самый простой
2
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,113
Записей в блоге: 2
24.07.2019, 17:39
Цитата Сообщение от Toros1992 Посмотреть сообщение
Тогда вариант с группировкой самый простой
Для тех кто понимает LINQ....
2
97 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 410
25.07.2019, 12:08
Лучший ответ Сообщение было отмечено Элд Хасп как решение

Решение

C#
1
2
3
4
       var result = arr.OrderBy(c => c)
                            .GroupBy(x => x)
                            .SelectMany((g, i) => g.Select(e => new { Num = e, Rank = i + 1 }))
                         .Where(n => n.Rank <= 5).ToList();
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,113
Записей в блоге: 2
25.07.2019, 14:24
Лучший ответ Сообщение было отмечено Элд Хасп как решение

Решение

ahtik95, тогда уж полностью надо результат получить:
C#
1
2
3
4
5
6
7
8
        var result = arr
                    .OrderBy(c => c)
                    .GroupBy(x => x)
                    .SelectMany((g, i) => g.Select(e => new { Num = e, Rank = i + 1 }))
                    .Where(n => n.Rank <= 5)
                    .Select (n=> n.Num.ToString())
                    .Aggregate((n, a) => n + ", " + a);
        Console.WriteLine(result);
0
97 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 410
25.07.2019, 14:39
Цитата Сообщение от Элд Хасп Посмотреть сообщение
тогда уж полностью надо результат получить:
Aggreagate еще не использовал , неплохо.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,113
Записей в блоге: 2
25.07.2019, 15:12
Лучший ответ Сообщение было отмечено Элд Хасп как решение

Решение

Цитата Сообщение от ahtik95 Посмотреть сообщение
Aggreagate еще не использовал
В данном случае это эквивалент метода string.Join().

В вашем коде SelectMany и Where, на мой взгляд, тоже избыточны.
Проще сделать так:
C#
1
2
3
4
5
                Console.WriteLine(string.Join(", ", arr
                            .OrderBy(c => c)
                            .GroupBy(x => x)
                            .Take(5)
                            .Select(n => string.Join(", ", n))));
Добавлено через 1 минуту
OrderBy и GroupBy можно поменять местами - результат не изменится.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.07.2019, 15:12
Помогаю со студенческими работами здесь

Как вывести все элементы массива в консоль?
Доброго времени суток, помогите пожалуйста решить такую проблему: необходимо вывести 50 элементов одномерного массива в цикле. Причем,...

Как вывести элементы массива на консоль с определенной задержкой
Простая программа.Что я не так делаю? using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Два массива, найти слово и вывести на консоль вместе с переводом
static void Main(string args) { ............ ............ //где-то тут насколько я понял необходимо выполнить...

Вывести на экран номера всех элементов, не совпадающих с максимальным (консоль)
Вывести на экран номера всех элементов, не совпадающих с максимальным.

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru