Одномерные массивы, сортировка - C#

Узнай цену своей работы

Формулировка задачи:

Из последовательности целых чисел вывести в порядке возрастания все числа, стоящие на чётных местах и встречающиеся более двух раз. Я попытался определить элементы встречающиеся в последовательности более двух раз. Но где-то есть ошибка, так как программа выводит только число 22, хотя есть и число 5, встречающееся более двух раз. В то же время записываю в masLenght количество, встречающихся элементов в последовательности более двух раз и элементы стоящие в четных местах. Это для того чтобы создать новый массив с определенным количеством элементов masLenght , и добавить туда эти элементы после чего их отсортировать. Но на сколько я понимаю это очень затяжной и наитупейший подход к решению задачи. Подскажите пожалуйста как все-таки решить задачку, только без применения ArrayList. Ну а если иначе никак, то и с ним можно.
Листинг программы
  1. Console.Write("Данный массив: ");
  2. int[] mas = { 22, 5, 9, 0, 22, -6, 5, 3, 22, 8,-34, 11, 5 };
  3. int count = 1, masLenght = 0;
  4. for (int i = 0; i < mas.Length; i++)
  5. Console.Write(mas[i] + " ");
  6. Console.WriteLine();
  7. for( int h = 0; h < mas.Length; h++)
  8. {
  9. for (int f = h+1; f < mas.Length; f++)
  10. {
  11. if (mas[h] == mas[f])
  12. {
  13. count++;
  14. }
  15. }
  16. if(count > 2)
  17. {
  18. Console.WriteLine("Встречается более двух раз: "+ mas[h]);
  19. masLenght++;
  20. }
  21. count = 1;
  22. if(h++ % 2 == 0)
  23. {
  24. // Console.WriteLine("Элемент стоит на четном месте: " + mas[h]);
  25. masLenght++;
  26. }
  27. }
  28. Console.WriteLine("Кол во элементов: " + masLenght);

Решение задачи: «Одномерные массивы, сортировка»

textual
Листинг программы
  1.         static void Add(ref int[] n2, int a)
  2.         {
  3.             if (Array.IndexOf(n2, a) >= 0) return;
  4.             Array.Resize(ref n2, n2.Length + 1);
  5.             n2[n2.Length - 1] = a;
  6.         }
  7.         static void Main(string[] args)
  8.         {
  9.             int[] mas = { 22, 5, 9, 0, 22, -6, 5, 3, 22, 8, -34, 11, 5 };
  10.             int[] was = new int[mas.Length];
  11.             int[] n2 = new int[0];
  12.             Console.WriteLine("Данный массив:");
  13.             for (int i = 0; i < mas.Length; i++)
  14.             {
  15.                 Console.Write(mas[i] + " ");
  16.                 was[i] = 0;
  17.             }
  18.             Console.WriteLine();
  19.             for (int i = 0; i < mas.Length - 2; i++)
  20.                 if (was[i] == 0)
  21.                 {
  22.                     if (i % 2 == 1) Add(ref n2, mas[i]);
  23.                     int n = 0;
  24.                     for (int j = i; j < mas.Length; j++)
  25.                         if (mas[i] == mas[j])
  26.                         {
  27.                             n++;
  28.                             was[j] = 1;
  29.                         }
  30.                     if (n > 2) Add(ref n2, mas[i]);
  31.                 }
  32.             Array.Sort(n2);
  33.             foreach (int i in n2)
  34.                 Console.Write(i + " ");
  35.             Console.WriteLine();
  36.             Console.ReadKey(true);
  37.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы