Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
#1

Выделение "слов" из последовательности бит - C++

19.02.2013, 20:52. Просмотров 667. Ответов 7
Метки нет (Все метки)

Имеется файл из вещественных чисел, я считываю его и преобразовываю в unsigned long домножив каждое вещественное число на 2^32. Затем эту последовательность целых чисел преобразовываю в битовую последовательность. И в этой битовой последовательности мне нужно выделять слова по примеру и Подсчитать количество "слов" в "словаре" :
№ бита Словарь
Бит Новое слово? Слово № слова
1 0 Да 0 (бит 1) 1
2 1 Да 1 (бит 2) 2
3 0 Нет
4 1 Да 01 (биты 3-4) 3
5 1 Нет
6 0 Да 10 (биты 5-6) 4
7 0 Нет
8 1 Нет
9 0 Да 010 (биты 7-8-9) 5
10
Всё понятно до выделения слов

Добавлено через 3 часа 11 минут
хелп
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2013, 20:52     Выделение "слов" из последовательности бит
Посмотрите здесь:
C++ Создание переменной типа "чар" из последовательности бит
C++ Посчитать сколько слов в строке начинается с буквы "т" 2. Ввести фразу. Все последовательности одинаковых символов заменить на выражение N(C)
Подсчитать количество слов "KSM" и "SKS" в строке C++
C++ Заданный словарь слов. Найти в нем слова-палиндромы, то есть такие, которые одинаково читаются слева направо и наоборот, например, "АННА", "ШАЛАШ"
Сокращение слов (например, "напряженность"- "напр-ть") C++
C++ Формула Шеннона "Энтропия, бит"
C++ Считывание слов из потока cin и вывод их в поток cout, с заменой нежелательных слов словом "Bleep"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
19.02.2013, 21:29     Выделение "слов" из последовательности бит #2
Всё понятно до выделения слов
Признаться, не все.

Если речь идет о вещественных числах типа float (32 bits), рассматриваемых (cast) как unsigned long (32 bits), то "домножив" такое число на 2^32 (иными словами, сдвинув на 32 разряда влево, вы гарантированно получаете 0. Если вы умножаете его как вещественное на вещественное 2^32, то это никак не делает его целым типа unsigned long.

Остальное еще более непонятно.
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
20.02.2013, 08:24  [ТС]     Выделение "слов" из последовательности бит #3
Цитата Сообщение от gazlan Посмотреть сообщение
Признаться, не все.

Если речь идет о вещественных числах типа float (32 bits), рассматриваемых (cast) как unsigned long (32 bits), то "домножив" такое число на 2^32 (иными словами, сдвинув на 32 разряда влево, вы гарантированно получаете 0. Если вы умножаете его как вещественное на вещественное 2^32, то это никак не делает его целым типа unsigned long.

Остальное еще более непонятно.
Допустим у меня есть файл в котором уже хранятся целые числа unsigned long, мне надо считать их в массив и побитово выделить слова по примеру:
010110
1 слово 0
2 слово 1
3 слово 01
4 слово 10
Как выделять побитово я пока не разобралась
XRuZzz
Антикодер
642 / 543 / 27
Регистрация: 15.09.2012
Сообщений: 2,495
20.02.2013, 09:23     Выделение "слов" из последовательности бит #4
какой будет результат если произвести операцию логического побитового "и" над этими числами
00000011 и 00010110
?

а так какой будет результат
00000001 и 00010110
?

Битовые операции в вики
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
20.02.2013, 12:08     Выделение "слов" из последовательности бит #5
мне надо считать их в массив и побитово выделить слова
А можно услышать общую постановку задачи?

Сдается, вам хочется реализовать битовый вариант LZ78.

Иными словами, если вы работаете с битовым потоком, то неважно, целые там числа или какие-то еще и читать
надо побитово, а не словами.

В любом случае, вам требуются словарь и парсер. Дальше - классика: Имеем пустой словарь и пустое слово. Парсер считывает в слово очередной бит и проверяет, есть ли это слово в словаре. Если нет - заносит его в словарь, если есть - добавляет к нему бит и проверяет... Для каждого слова, словарь хранит все его префиксы.

Или можете сразу строить суффиксное дерево.

P.S.
Вероятно, ваша тема больше подходит для раздела "алгоритмы".
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
20.02.2013, 17:51  [ТС]     Выделение "слов" из последовательности бит #6
Цитата Сообщение от gazlan Посмотреть сообщение
А можно услышать общую постановку задачи?

Сдается, вам хочется реализовать битовый вариант LZ78.

Иными словами, если вы работаете с битовым потоком, то неважно, целые там числа или какие-то еще и читать
надо побитово, а не словами.

В любом случае, вам требуются словарь и парсер. Дальше - классика: Имеем пустой словарь и пустое слово. Парсер считывает в слово очередной бит и проверяет, есть ли это слово в словаре. Если нет - заносит его в словарь, если есть - добавляет к нему бит и проверяет... Для каждого слова, словарь хранит все его префиксы.

Или можете сразу строить суффиксное дерево.

P.S.
Вероятно, ваша тема больше подходит для раздела "алгоритмы".
Да совершенно верно, мне нужно считывать побитово и проверять есть ли такое слово в словаре, каждое новое слово записывать в счётчик и в конце вывести число слов в словаре, т.е. 0 1 10 01 101 010 и т.д.
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
20.02.2013, 18:28     Выделение "слов" из последовательности бит #7
Ну, так а в чем проблема?

Побитовое чтение из потока? См., например, у Марка Нельсона) - автора известной книги (и/или в исходниках почти любого архиватора)

http://marknelson.us/attachments/199...ession/bitio.h
http://marknelson.us/attachments/199...ession/bitio.c

LZ78/LZW?

Поищите в поисковиках "The Data Compression Book", посмотрите статьи:

http://marknelson.us/1989/10/01/lzw-data-compression/
http://marknelson.us/2011/11/08/lzw-revisited/

Большая (хотя и не слишком "свежая") подборка литературы, программ и исходных кодов по сжатию:
http://www.compression.ru/download/

Можете еще посмотреть http://en.wikipedia.org/wiki/Radix_tree, но того, что выше должно хватить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2013, 18:36     Выделение "слов" из последовательности бит
Еще ссылки по теме:
C++ Дан текст, состоящий не менее чем из пяти слов. Сформировать стек из тех слов, в которых присутствует буква "Е"
C++ Дан текст, состоящий не менее чем из пяти слов. Сформировать стек из тех слов, в которых присутствует буква "Е"
Выделение памяти для "треугольного" массива C++
C++ Строки. Поиск одинаковых слов в предложениях. Вывод вместо одинаковых слов "*"
C++ Найти количество слов в заданном тексте, которые заканчиваются на "ая"

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

Или воспользуйтесь поиском по форуму:
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
20.02.2013, 18:36  [ТС]     Выделение "слов" из последовательности бит #8
Цитата Сообщение от gazlan Посмотреть сообщение
Ну, так а в чем проблема?

Побитовое чтение из потока? См., например, у Марка Нельсона) - автора известной книги (и/или в исходниках почти любого архиватора)

http://marknelson.us/attachments/199...ession/bitio.h
http://marknelson.us/attachments/199...ession/bitio.c

LZ78/LZW?

Поищите в поисковиках "The Data Compression Book", посмотрите статьи:

http://marknelson.us/1989/10/01/lzw-data-compression/
http://marknelson.us/2011/11/08/lzw-revisited/

Большая (хотя и не слишком "свежая") подборка литературы, программ и исходных кодов по сжатию:
http://www.compression.ru/download/

Можете еще посмотреть http://en.wikipedia.org/wiki/Radix_tree, но того, что выше должно хватить.
Спасибо буду искать!
Yandex
Объявления
20.02.2013, 18:36     Выделение "слов" из последовательности бит
Ответ Создать тему
Опции темы

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