![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 17.05.2010
Сообщений: 8
|
![]()
Язык C++ ;Задача такая : Дан файл 1.txt (в нем содержится текс романа “Война и мир”). Необходимо в файл 2.txt выписать все встречающиеся слова (по одному в строке) с сортировкой по уменьшению частоты появления этого слова (слова учитываются без знаков препинания и длиной не менее 4х символов). Необходимо вывести на экран время работы программы.
Вопрос в том что здесь лучше использовать чтобы время было минимальным ( VS 2008 ) Последний раз редактировалось matrosken; 17.05.2010 в 20:22. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 23.07.2009
Сообщений: 66
|
![]()
Используете map, где храните по ключу типа "стринг" значение типа "инт", которое будет показывать, сколько раз встречается слово. Потом закидываете в массив из мэпа пары "стринг-инт" и вызываете встроенную сортировку с компаратором по частоте встречания. Сложность будет
O(nlogn+t+klogk)=O(max(t,klogk)), где n - количество уникальных слов, t-количество символов в тексте, k- количество всех слов. Для замера времени есть встроенные функции (названия не помню). Посмотрите на cplusplus.com/reference
O(n)
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 17.05.2010
Сообщений: 8
|
![]()
Какой массив стринг-инт? и какая встроенная сортировка?
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 23.07.2009
Сообщений: 66
|
![]()
массив лучше всего реализовывать как вектор пар. встроенную сортировку вызываете так:
sort(v.begin(),v.end(),comp), где v - ваш вектор пар ,а comp - компаратор (его напишете сами) булевского типа. В начале программы не забудьте Код:
O(n)
Последний раз редактировалось sabbathist; 18.05.2010 в 19:22. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 17.05.2010
Сообщений: 8
|
![]() Код:
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 23.07.2009
Сообщений: 66
|
![]()
Хм. Интересно. Возможно, вы чего-то не договариваете). Но если работает - думаю, вы не в обиде.
O(n)
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 17.05.2010
Сообщений: 8
|
![]()
не знаю
правда не const char* а char* string не работает не знаю почему |
![]() |
![]() |
![]() |
#8 |
Регистрация: 17.05.2010
Сообщений: 8
|
![]()
какую функцию из fstream мне нужно взять для того чтоб слова выбирать нормально?
и вопрос еще уменьшится ли в данном случае время если подключить два потока ( правда я сам не знаю как это сделать) как вывести такой вектор в файл? Последний раз редактировалось matrosken; 20.05.2010 в 19:42. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 23.07.2009
Сообщений: 66
|
![]()
Ну, я слова выбирал след. образом: читал весь текст, а потом парсил руками. два потока через fopen (как им пользоваться - на cplusplus.com/reference а сам я не помню : ). при выводе пишете не сout имя подгруженного потока (вроде бы). если поток вывода перегружать через freope, то можно и cout.
O(n)
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 17.05.2010
Сообщений: 8
|
![]()
Спасибо за помощь
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Быстрая сортировка | Serious | Общие вопросы Delphi | 2 | 02.11.2010 13:38 |
быстрая сортировка настолько быстрая | Serg12 | Помощь студентам | 8 | 28.03.2010 21:31 |
Быстрая сортировка | _Studentka_ | Помощь студентам | 9 | 20.11.2009 00:19 |
Быстрая сортировка | Syltan | Общие вопросы C/C++ | 7 | 18.09.2009 17:35 |
быстрая сортировка | ГРИГОРИЙ-кореш | Помощь студентам | 1 | 16.04.2009 18:13 |