Программа архиватор- разархиватор текстовых файлов на русском языке ( Применяются только буквы русского алфавита, знаки припенания и пробелы, сжатие должно быть максимальным).
Примечание: Мне препод сказал, что как-то надо сделать так, чтобы на символ приходилось не 8 бит, а 5... можно 6. ( Сказал надо использовать SHL и SHR, а я только школу закончил, полтора месяца отучился, что такое бинарные операции и что с ними делать не представляю).
blackhard
26.10.2007 3:00
короче мой тебе совет напиши в платном разделе я за 150 р договорился к завтому уже сделают
klem4
26.10.2007 11:27
я сделаю эту программу, только чуть позже, возможно завтра-послезавтра (ну если конечно раньше вдруг никто не сделает).
Malice
26.10.2007 14:40
В 6 бит можно влезть без заглавных русских букв, в 5 вообще никак.. Конечно это если просто делать замену, что не гарантирует максимального сжатия. А так можно и до хафмана дойти, но это уже не так тривиально.
Ozzя
26.10.2007 15:44
Цитата
в 5 вообще никак..
можно без ё
volvo
26.10.2007 15:58
Цитата
можно без ё
Только если без знаков препинания. С ними число символов зашкалит за 32, и надо будет 6 бит...
Malice
26.10.2007 16:45
Ну в таком случае самый простой выход - задавать через множесто используемый алфавит, считать необходимое колво бит и на них, собственно, делать shr / shl и иже с ними.. Тогда для [а..п,р..я] будет 5 бит, если больше, то больше.
Гость
26.10.2007 22:42
Цитата
я сделаю эту программу, только чуть позже, возможно завтра-послезавтра (ну если конечно раньше вдруг никто не сделает).
Спасибо, буду ждать. Мне сказали, что можно без "ъ". И в шесть бит было бы хорошо. Спасибо большое если сделаешь...)
Гость
26.10.2007 22:42
И вообще всем СПАСИБО, кто ответил
Malice
26.10.2007 23:02
Дел здесь на час максимум да и кода в полтора экрана.. Поучавствовать не хочешь ? Иначе, если я правильно понял, предлагают в задачи на заказ.
Гость
26.10.2007 23:06
Я бы поучавствовыл... но проблема, что с паскалем плохо, в школе почти не было, а тут в инсте сразу завал... мне моей головой пока не понять. А в книге че-то ничего не ту... Мне бы хотя бы только алгоритм сжатия, с открытием файла я разберусь.
Malice
27.10.2007 16:02
Алгоритм простой: Выбираем используемый алфавит, читаем посимвольно из исходного файла и записаваем порядковые номера символов в конечный файл. Количество бит на представление порядкового номера будет меньше 8-и (6 с твоим алфавитом), чем и достигается сжатие. Единственная сложность - нельзя писать в файл по 6 бит, нужно накапливать результат и скидывать по 8. Небольшой пример.. Алфавит='0'..'9', необходимое колво бит = 4 (1001-максимальный номер в алфавите), исходная строка='0123456789'; 1. результат=0; полезных бит в результате 0 2. читаем символ, результат=0000; полезных бит =4; итоговая строка=''; записать пока нечего.. 3 читаем символ, результат=0000 0001; полезных бит =8, пишем.. итоговая строка='0000 0001'; 4 читаем символ, результат=0010; полезных бит =4; 5 читаем символ, результат=0010 0011; полезных бит =8, , пишем.. итоговая строка='0000 0001 0010 0011'; Ну и так далее, пока не кончится файл. SHL понадобится в момент сложения текущего результата с уже накопленным, т.е. результат=(результат SHL колво_бит) OR текущий_результат; Вот где то так
klem4
30.10.2007 22:17
извиняюсь что с опозданием, времени совсем нету свободного в последнее время, вот написал, код конечно грязный, времени для сокращения к сожалению тоже нет, но хоть что-то ... пример файла состоящего из алфавита в аттаче, сжатие
232 байта ----> 174 байта (для прикрепленного файла)