Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/17: Рейтинг темы: голосов - 17, средняя оценка - 4.88
xkalex
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 14
1

Посчитать одинаковые числа в массиве

30.10.2013, 02:56. Просмотров 3399. Ответов 9
Метки нет (Все метки)

Помогите пожалуйста с кодом. Нужно в массиве посчитать одинаковые числа от 3-х шт. Ну т.е если в массиве есть 3 и больше одинаковых чисел, то посчитать сколько и сохранить в переменную, а если нет, то переменную обнулить. Вот код который написал я, но он не работает. Подскажите, в чем моя ошибка, или посоветуйте более удобный способ? Заранее спасибо
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
   for (int M = 0; M < 5; M++)
            {
                if (Z < 3)
                {
                    for (int N = 0; N < 5; N++)
                    {
                        if (x[M] == x[N]) Z++;
                    }
                }
                if (Z < 3) Z = 0;
            }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2013, 02:56
Ответы с готовыми решениями:

Выяснить, есть ли одинаковые числа в одномерном, двумерном массиве
Помогите пожалуйста, можете решить задачки, только понятным кодом?) Чтобы сам...

Проверить, есть ли в массиве хотя бы два элемента, ссылающихся на одинаковые числа
Дан массив ссылок на вещественные числа. Написать программу для проверки, есть...

Массив: Найти в заданном массиве все числа меньше нуля и посчитать их
Дан случайный массив. Найти все числа меньше нуля и посчитать их

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

Заданного целого трехзначного числа одинаковые числа
определить, есть ли среди цифр заданного целого трехзначного числа одинаковые

9
Diman777
360 / 332 / 108
Регистрация: 12.02.2013
Сообщений: 653
30.10.2013, 07:41 2
Цитата Сообщение от xkalex Посмотреть сообщение
или посоветуйте более удобный способ?
более удобный LINQ
C#
1
2
3
4
5
            var res = from x in mas // mas - массив
                      group x by x;
 
            int count = res.Count(x => x.Count() > 3);
            Console.WriteLine(count);
1
ViterAlex
6822 / 3797 / 1552
Регистрация: 11.02.2013
Сообщений: 8,344
Завершенные тесты: 3
30.10.2013, 09:50 3
Сначала отсортируй массив любым способом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
int temp;
for (int i = 0; i < x.length; i++)
{
    for (int j = i + 1; j < x.length; j++)
    {
        if (x[i] > x[j])
        {
            temp = x[i];
            x[i] = x[j];
            x[j] = temp;
        }
    }
}
Затем проверяй себе на здоровье
C#
1
2
3
4
5
6
7
8
9
10
11
12
int counter = 1, temp = x[0];
for (int i = 1; i < x.length; i++)
{
    if (temp == x[i]) counter++;
    else
    {
        if (counter >= 3) break;
        counter = 1;
        temp = x[i];
    }
}
Console.WriteLine("В массиве {0} повторяющихся элемента", counter);
Diman777, считаю, что LINQ здесь неуместен. Пусть сначала научится работать напрямую, чтобы понимать процесс. А потом уже можно и упрощать себе жизнь
1
xkalex
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 14
30.10.2013, 16:25  [ТС] 4
ViterAlex, Не работает =\ Массив к примеру 3 3 7 7 6, он говорит что одинаковых переменных 3. Может быть в методе забивания рандомных чисел в массив что-то не то? Ну у меня с таймером просто еще.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void timer_Tick(object sender, EventArgs e)
        {
                Random random = new Random();
                for (int i_4 = 0; i_4 < 5; i_4++)
                {
                        if (timerCounter < 50)
                        {
                        rand = random.Next(1,9);
                        x[i_4] = rand;
                        myLabel[i_4].Text = Convert.ToString(x[i_4]);
                        }
                        else
                        {
                            timer.Stop();
                            timer.Interval = 10;
                            timerCounter = 0;
                            CheckWin();
                        }
                }
                timerCounter++;
        }
0
ViterAlex
6822 / 3797 / 1552
Регистрация: 11.02.2013
Сообщений: 8,344
Завершенные тесты: 3
30.10.2013, 16:59 5
Как это не работает? Код, сознаюсь, писал на коленке, т.к. был далеко от компа. Но сейчас проверил, и всё работает. Какое отношение приведённый тобой код таймера имеет к поиску одинаковых элементов в массиве?
Да, ещё. Код будет работать только с отсортированным массивом
1
xkalex
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 14
30.10.2013, 20:06  [ТС] 6
ViterAlex, Понял в чем у меня проблема, я оказывается неправильно отображал массив в лейбелы, по этому и не совпадало. Спасибо за помощь)
0
Ja_Marinelka
1 / 1 / 0
Регистрация: 10.10.2013
Сообщений: 44
03.03.2014, 18:16 7
C#
1
2
3
4
5
var res = from x in mas // mas - массив
                      group x by x;
 
            int count = res.Count(x => x.Count() > 3);
            Console.WriteLine(count);
а как вывести именно число, которое повторяется?

Добавлено через 50 минут
все, получилось)))
0
Harrison
3 / 3 / 1
Регистрация: 07.11.2010
Сообщений: 73
15.09.2014, 13:57 8
C#
1
2
3
            //Поиск совпадающих цифр
            Console.WriteLine("Повторяющиеся цифры: ");
            Console.WriteLine(string.Join(" ", myArr.Where(x => myArr.Count(y => x == y) > 1).Distinct()));
0
Virviglaz
3 / 3 / 1
Регистрация: 21.10.2015
Сообщений: 92
12.04.2017, 09:46 9
C#
1
2
3
4
5
var res = from x in mas // mas - массив
                      group x by x;
 
            int count = res.Count(x => x.Count() > 3);
            Console.WriteLine(count);
Подскажите пожалуйста! Мне нужно узнать сколько раз в списке встречается каждый его элемент (число). Как это сделать?
0
Tsin
724 / 468 / 184
Регистрация: 30.12.2012
Сообщений: 1,268
Записей в блоге: 2
Завершенные тесты: 3
12.04.2017, 11:38 10
Virviglaz, так:
C#
1
2
3
4
5
6
7
8
9
10
var mas = new int[] { 1, 1, 1, 2, 2, 3, 2, 3, 2, 4, 5, 4, 5 };
 
var res = from x in mas
            group x by x;
 
//имхо, лаконичнее выглядит в таком синтаксисе
//res = mas.GroupBy(x => x);
 
foreach (var group in res)
    Console.WriteLine($"{group.Key}: {group.Count()}");
1
12.04.2017, 11:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2017, 11:38

Содержатся ли в одномерном массиве одинаковые элементы
Как определить, содержатся ли в одномерном массиве одинаковые элементы?

Как отследить одинаковые значения в массиве?
Всем добрый день! Кусок кода отслеживает в переменных...

Как вывести одинаковые значения элементов в зубчатом массиве?
Например, создан массив массивов. Кол-во массивов вводит пользователь.кол-во...


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

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

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