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

Удалить в массиве все числа, которые повторяются более двух раз

25.11.2017, 14:14. Показов 13355. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
После генерации чисел и нахождения одинаковых чисел, программа уходит в бесконечный цикл. Не могу понять, где я напортачил. Подскажите, пожалуйста. Может как-то можно оптимизировать и уменьшить код.

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
            Console.WriteLine("Введите размерность массива:");
            int n = Int32.Parse(Console.ReadLine());
            int[] arr = new int[n];
            Random random = new Random();
            int count = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = random.Next(0, 10);
                Console.Write(arr[i] + " ");
            }
            Console.WriteLine();
 
            for (int i = 0; i < arr.Length; i++)
            {
                count = 1;
                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (arr[j] == arr[i])
                        count++;
                }
                if (count > 2)
                {
                    int one = arr[i];
                    for (int j = i; j < arr.Length; j++)
                    {
                        if (arr[j] == one)
                        {
                            // удаляем
                            for (int k = j + 1; k < arr.Length; k++)
                            {
                                arr[k - 1] = arr[k];
                            }
                            n--;
                            j--;
                        }
                    }
                    i--;
                }
            }
            if (n == 0)
                Console.WriteLine("Пустой массив.");
            else
                for (int p = 0; p < arr.Length; p++)
                    Console.Write(arr[p] + " ");
            Console.ReadKey();
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2017, 14:14
Ответы с готовыми решениями:

Удалить в массиве все числа, которые повторяются более двух раз
Удалить в массиве все числа, которые повторяются более двух раз.

Удалить в массиве все числа, которые повторяются более двух раз
Задание на C++

Удалить в массиве все элементы, которые повторяются более двух раз
Удалить в массиве все элементы, которые повторяются более двух раз

Каждое второе число в массиве, которые повторяются более 2 раз, удалить
На языке С написать программу. Условия: Дан массив a. Каждое второе число,которые повторяются...

4
926 / 457 / 230
Регистрация: 02.06.2016
Сообщений: 730
25.11.2017, 14:55 2
Лучший ответ Сообщение было отмечено comcor2013 как решение

Решение

comcor2013, во всех циклах замени arr.Length на n.
1
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 149
25.11.2017, 15:08  [ТС] 3
Цитата Сообщение от Aael Посмотреть сообщение
comcor2013, во всех циклах замени arr.Length на n.
Спасибо! Заработало. А почему так правильнее будет в отличии от моего варианта?
0
926 / 457 / 230
Регистрация: 02.06.2016
Сообщений: 730
25.11.2017, 15:32 4
comcor2013, т.к. на самом деле ничего не удаляется, а сдвигается влево, то длина массива arr.Length не менятся, в хвосте массива остается "мусор". Если парный элемент попал на конец массива, то из-за j-- он будет сравниваться сам с собой бесконечно много раз.

Но т.к. у нас есть виртуальная граница n между полезными даннными и мусорными, то можно ориентироваться по ней.
0
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 149
25.11.2017, 15:41  [ТС] 5
Aael, понял. Благодарю
0
25.11.2017, 15:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2017, 15:41
Помогаю со студенческими работами здесь

удалить все символы которые повторяются более раз
допустим есть строка- 12546876A54FF475E587FFFFFFFFFF154C нужно удалить все символы F которые...

Вывести цифры шестнадцатеричного представления числа, которые повторяются более двух раз
Парни, нужна помощь, очень срочно, желательно с объяснениями работы данного алгоритма и побитовых...

Найти и вывести на экран все элементы, которые которые повторяются более N/2 раз
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int _tmain() {...

Найти минимильное значение среди чиcел которые не повторяются, или повторяются не более 2-х раз
Вобщем надо решить данную задачу : Найти минимильное значение чилел, которые не повторяються, или...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru