Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> словарь частоупотребимых слов 
:(
    Опции темы
VanHelsing
Дата 25.2.2013, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Здравствуйте. Столкнулся со следующим задачей. На входе задается список слов, для которых указана частота из появления в словаре. Также на входе задается несколько слов или часть слов (возможно просто один символ). Необходимо вывести из введенного ранее словаря в порядке убывания по частоте слова которые содержать введенные значения.
Например.
На входе задается словарь.
Код

qard 10
qanojd 20
qaretachd 1
 
Далее задаются символы.
Код

q
qar
 
В результате должно вывестись следующее.
Код

qanojd
qard
qaretachd

qard
qaretachd

Надеюсь суть задания понятно изложил.
Я думаю решать следующим образом. Хранить данные в двумерном массиве, распологая их в порядке убывания частоты упоминания. А затем поиск значений осуществлять по всему массиву сверху на совпадения, если совпадение найдено, тогда они будут находится в порядке убывания.
Но есть один момент. Если частота упоминаний совпадает, тогда вывод необходимо осуществлять в алфавитном порядке.
Возможно кто поскажет правильный ли вариант решения я выбрал, а также сортировку лучше производить в процессе считывания, или после окончания считывания всех введенных слов?


--------------------
PM MAIL   Вверх
Akina
Дата 25.2.2013, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Код

select lexems.lexem, words.word
from words, lexems
where words.word like concat(lexems.lexem, '%')
order by lexems.lexem, words.weight, words.word;



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
VanHelsing
Дата 25.2.2013, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Спасибо большое, но задача не для SQL. Выполнить необходимо на С#. 


--------------------
PM MAIL   Вверх
Akina
Дата 25.2.2013, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Цитата(VanHelsing @  25.2.2013,  16:22 Найти цитируемый пост)
Выполнить необходимо на С#.  

А разве там нет сортированного списка? с методом поиска по списку? ну или может коллекции... не силён.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
VanHelsing
Дата 25.2.2013, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Хотелось бы чтобы мне подсказали правильное направление поиска решения.


--------------------
PM MAIL   Вверх
maxim1000
Дата 25.2.2013, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Цитата(VanHelsing @  25.2.2013,  18:21 Найти цитируемый пост)
Хотелось бы чтобы мне подсказали правильное направление поиска решения.

"сортированный список" вполне тянет на направление smile
думаю, дальше уже нужно разбираться в C#, так что переношу в соответствующий форум


--------------------
qqq
PM WWW   Вверх
VanHelsing
Дата 25.2.2013, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Насколько я понимаю для реализации необходимо использовать списки?


--------------------
PM MAIL   Вверх
VanHelsing
Дата 27.2.2013, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Лучше наверное использовать коллекции, только не совсем понимаю как правильно их описать.


--------------------
PM MAIL   Вверх
phomm
Дата 27.2.2013, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 7.10.2010

Репутация: нет
Всего: 1



Полигончик киньте, чтобы предметно Вам уже набросать, а то чисто мой Вам может не подойти, да и нет времени у меня с нуля делать. А так и мне и Вам удобнее, и наперёд так надо бы делать. Вопрос и код/проект на что ориентироваться, до какого шага Вы дошли и т.п.
PM MAIL WWW ICQ Skype   Вверх
DarkDragon
Дата 11.3.2013, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: нет
Всего: 8



Код

class CWord
{
    public string Word { get; set; }
    public int Weight { get; set; }

    public CWord(string wrd, int wght) { Word = wrd; Weight = wght; }
}

class CLexem
{
    public string Lexem { get; set; }
    public CLexem(string lex) { Lexem = lex; }
}

class SortOut
{
    public SortOut()
    {
        List<CWord> words = new List<CWord>();
        List<CLexem> lexems = new List<CLexem>();

        // Заполняем список слов
        words.Add(new CWord("qard", 10));
        words.Add(new CWord("qanojd", 20));
        words.Add(new CWord("qaretachd", 1));

        // Заполняем список лексем
        lexems.Add(new CLexem("q"));
        lexems.Add(new CLexem("qar"));

        // Делаем выборку
        var x = from wrd in words from lex in lexems where wrd.Word.StartsWith(lex.Lexem)
                orderby lex.Lexem, wrd.Weight descending, wrd.Word
                select wrd;

        foreach (CWord w in x)
        {
            Debug.WriteLine(w.Word);
        }
    }
}


Ну вот как-то так можно
PM MAIL   Вверх
DarkDragon
Дата 11.3.2013, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: нет
Всего: 8



можно обойтись и без Linq, заменив запрос на следующую последовательность кода:
Код

words.Sort(delegate(CWord w1, CWord w2) { return w2.Weight.CompareTo(w1.Weight); } );
foreach (CLexem lex in lexems)            
    foreach (CWord word in words)
        if (word.Word.StartsWith(lex.Lexem)) Debug.WriteLine(word.Word);


Для тех кто не в танке: сначала сортируется список слов, потом перебираются все лексемы, где на каждую лексему перебираем все слова и выводим лишь те которые соответствуют условию.

Это сообщение отредактировал(а) DarkDragon - 11.3.2013, 06:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0544 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.