Четные и встречающиеся элементы > 2 раз в массиве - C#
Формулировка задачи:
Из последовательности целых чисел вывести в порядке возрастания все числа, стоящие на чётных местах и встречающиеся более двух раз.
Я попытался определить элементы встречающиеся в последовательности более двух раз. Но где-то есть ошибка, так как программа выводит только число 22, хотя есть и число 5, встречающееся более двух раз.
В то же время записываю в masLenght количество, встречающихся элементов в последовательности более двух раз и элементы стоящие в четных местах. Это для того чтобы создать новый массив с определенным количеством элементов masLenght , и добавить туда эти элементы после чего их отсортировать. Но на сколько я понимаю это очень затяжной и наитупейший подход к решению задачи. Подскажите пожалуйста как все-таки решить задачку, только без применения ArrayList. Ну а если иначе никак, то и с ним можно.
Листинг программы
- Console.Write("Данный массив: ");
- int[] mas = { 22, 5, 9, 0, 22, -6, 5, 3, 22, 8,-34, 11, 5 };
- int count = 1, masLenght = 0;
- for (int i = 0; i < mas.Length; i++)
- Console.Write(mas[i] + " ");
- Console.WriteLine();
- for( int h = 0; h < mas.Length; h++)
- {
- for (int f = h+1; f < mas.Length; f++)
- {
- if (mas[h] == mas[f])
- {
- count++;
- }
- }
- if(count > 2)
- {
- Console.WriteLine("Встречается более двух раз: "+ mas[h]);
- masLenght++;
- }
- count = 1;
- if(h++ % 2 == 0)
- {
- // Console.WriteLine("Элемент стоит на четном месте: " + mas[h]);
- masLenght++;
- }
- }
- Console.WriteLine("Кол во элементов: " + masLenght);
Решение задачи: «Четные и встречающиеся элементы > 2 раз в массиве»
textual
Листинг программы
- var q = from i in Enumerable.Range(0, mas.Length) // Выбрать все индексы от 0 до длины массива-1
- where i % 2 == 0 // Из них выбрать только четные индексы
- let n = mas[i] // Для каждого из индексов создать переменную n, имеющую значение элемента массива под этим индексом
- orderby n // Отсортировать выбранные элементы по возрастанию
- group n by n into g // Сгруппировать их по значению
- where g.Count() > 2 // Отфильтровать группы, в которых элементов не больше двух
- select g.Key; // Из оставшихся групп выбрать значение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д