Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2016, 12:31   #1
Дима85
Пользователь
 
Регистрация: 11.06.2016
Сообщений: 20
По умолчанию Поиск часто повторяющихся элементов

На форме есть несколько текстбоксов, объединённые в массив tb, в каждом из них введены числа через пробел. Не получается найти во всех текстбоксах самое часто повторяющееся число и количество повторений. Мой код выдаёт какие-то непонятные результаты, подскажите что не так, здесь подсчёт происходит по нажатию кнопки:
C#
Код:
private void Searsh_Click(object sender, EventArgs e)
        {
                foreach (TextBox tb in Controls.OfType<TextBox>().Where(x => x.Enabled == true)) // Проверяет, активны ли текстбоксы
                {
                    var sorted = tb.Text.GroupBy(x => x).Select(g => new { Value = g.Key, Count = g.Count() }).OrderByDescending(x => x.Count);
                    var odno = sorted.First();
                    Chisla.Text = odno.Value.ToString();
                    Povt.Text = odno.Count.ToString();
                }
        }
sorted - колекция повторяющихся чисел
tb - массив текстбоксов
Value - часто повторяющееся число
Count - количество повторений
Chicla - лэйбл, в котором показывается самое часто повторяющееся число
Povt - лэйбл, в который передаётся кол-во повторений

Да, и мне нужно ещё, чтобы исключалась ошибка (вдруг одинаковых чисел нет). Ну и если таких чисел несколько, отсортировать их по количеству повторений и просмотреть их. Есть способ, но не уверен, что он правильный:
Код:
if (sorted.Length >= 2)
                {
                    var dva = sorted.Skip(1).Take(1); // Пропустить первое число и выбрать второе
                    Chisla.Text = dva.First().Key;
                    Povt.Text = dva.First().Count.ToString();
                }
Заранее спасибо за помощь.
Дима85 вне форума Ответить с цитированием
Старый 19.06.2016, 22:04   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Код:
foreach (TextBox tb in Controls.OfType<TextBox>().Where(x => x.Enabled == true)) // Проверяет, активны ли текстбоксы
                {
                    var sorted = tb.Text.GroupBy(x => x).Select(g => new { Value = g.Key, Count = g.Count() }).OrderByDescending(x => x.Count);
уже тут ошибка в том, что используется цикл...... не "для каждого текстбокса", а "взять все активные текстбоксы".... ну и потом .Select(x => x.Text).GroupBy(x => x)..OrderByDescending(x => x.Count), чтоб получить все значения и кол-во повторений
я не совсем в курсе про текстбоксы, но если они многострочные, то нужно ещё и разбить их на строки
после этого, у тебя будет массив данных вида строка+кол-во и уже его ты можешь как-то доп. обработать (например, исключить пустые строки и строки с Count < 2)
ну и в самом конце делаешь FirstOrDefault, который, вроде, вернёт null, если ничего подходящего нет (я не помню может ли строка быть null, поэтому сам смотри с чем сравнивать результат, c null или '' )
GreenWizard вне форума Ответить с цитированием
Старый 20.06.2016, 10:37   #3
Дима85
Пользователь
 
Регистрация: 11.06.2016
Сообщений: 20
По умолчанию

Не совсем понятно. А можно на примере кода показать?
Дима85 вне форума Ответить с цитированием
Старый 20.06.2016, 10:51   #4
Дима85
Пользователь
 
Регистрация: 11.06.2016
Сообщений: 20
По умолчанию

Спасибо, сам разобрался. )
Дима85 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимальный алгоритм - получить список из N наиболее часто встречающихся элементов vedro-compota Общие вопросы по программированию, компьютерный форум 34 09.12.2012 13:11
C++ поиск повторяющихся (строковых) элементов в массиве danslash Помощь студентам 5 29.03.2010 01:35
поиск повторяющихся элементов в матрице I_newbie Помощь студентам 2 15.03.2010 22:44
количество повторяющихся элементов в массиве Андрей.12 Помощь студентам 1 28.01.2010 23:57