![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Нике |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 4 Пол: Женский Репутация: ![]() ![]() ![]() |
Пожалуйста, пожалуйста, помогите с решением...очень нужно, очень срочно..
Дан следующий алфавит и соответствующие буквам коды: пробел=000, а1=100, а2=1100, а3=10100, а4=11100, а5=100100, а6=110100, а7=101100,а8=111100. Нужно написать программу и блок-схему, декодирующую сообщение, т.е. мы вводим код - программа выдает буквы. 00 - признак конца символа 00000 - пробел. Вообще, нужно декодировать сообщение со следующими кодами, но мне кажется, это несколько усложняет задачу?? пробел=000, а1=100, а2=1000, а3=1100, а4=10000, а5=10100, а6=11000, а7=11100, а8=101000. Так сообщение обладает меньшей избыточностью, но как в таком случае распознавать пробелы непонятно... Блин, да мне хоть в каком виде.... Сообщение отредактировано: Нике - |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Не совсем ясно. Коды разной длины.. ?
Ты ничего не путаешь? уточни условие. Извиняюсь, кажется разобрался.. Сообщение отредактировано: lapp - -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Извиняюсь, кажется разобрался.. Да, второе условие (в отличие от первого) действительно корректно и дает возможность все распознать и расшифровать. Я немного попыхтел, делая прогу, но все получилось. Если еще есть интерес, можно обсудить. ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Нике |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 4 Пол: Женский Репутация: ![]() ![]() ![]() |
Интерес? Конечно есть!! Мне в понедельник нужно всё это дело сдавать..
![]() |
Malice |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я не понял суть проблемы
![]() |
Lapp |
![]()
Сообщение
#6
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Задача, конечно, странная.. Хотел бы я посмотреть на того человека, который решил бы на деле применять такое кодирование
![]() ![]() Ладно, ближе к делу. Алгоритм примерно такой (грубо) : - просматриваю код слева направо - любой символ начинается с 1 - окончание символа по двум нулям отследить нельзя, так как некоторые символы оканчиваются на 3 и даже на 4 нуля. - хорошо, правда, то, что символы различимы. Если бы восьмерка кодировалась 100000 (что, в общем-то, логично), комбинация а1 с пробелом была бы от нее неотличима. - идем слева направа, пока не наткнемся на по крайней мере 2 нуля и с этого момента.. - .. начинаем считать вводимые нули до новой единицы. - когда встречена единица или конец файла, отбрасываем накопленные нули тройками, считая пробелы. - когда нулей остается не больше четырех, пытаемся распознать символ. - если это удается, записываем в выходной файл символ и все посчитанные пробелы за ним. - если нет - выводим сообщение об ошибке в исходном коде. Усе, шеф, дело сделано, шеф.. © ![]() Твои соображения, Нике?.. И ваши, уважаемые коллеги.. ![]() Код выложу в следующем мессадже. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
klem4 |
![]()
Сообщение
#7
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Вот это кто-нибудь объяснить может:
Цитата 00 - признак конца символа Цитата а5=100100 ![]() Выходит a5 = a1a1 ? Тогда различить это невозможно. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
klem4, a5 = 10100, а не 100100...
Все ясно, я на первый вариант посмотрел (неверный который) ...klem4. |
Lapp |
![]()
Сообщение
#9
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Выходит a5 = a1a1 ? Тогда различить это невозможно. Итак, вот мой код. Только что сообразил, что он, скорее всего не сможет справиться с закодированным текстом, начинающемся с пробела (то есть 000). С остальными вроде работает.. Тестировалось в FPC при включенной совсместимости с TP. Программа читает входной поток из файла nike.dat (ниже нсть пример его содержимого и прога, генерящая такие файлы). { for Nike } Вот пример файла nike.dat : 10010001100000100001010000011000000100010000000000111001100010100000101000000000 0001000 - если строчка в браузере разделилась на две, слепи их в одну. В нем не должно быть никаких лишних символов типа переводов строки в конце.. А это прога, которая генерит входные файлы по строке, задаваемой константой s : const Вот, пожалуй, и все пока. ![]() Вопросы?.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
klem4 |
![]()
Сообщение
#10
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Уфффф я вот тут тоже насочинял))))))))
uses crt; Много похожих частей кода, так что думаю можно сократить будет. Ну и в Crypt можно 2 массива вместо if-ов сделать. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Нике |
![]()
Сообщение
#11
|
Группа: Пользователи Сообщений: 4 Пол: Женский Репутация: ![]() ![]() ![]() |
lapp, klem4, спасибо вам огромное!!
![]() Мне сложно что-либо прокомментировать, т.к. пытаюсь разобраться в том, что вы написали - и это у меня тоже вызывает затруднение =( А блок-схема получится огромная.. |
Lapp |
![]()
Сообщение
#12
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
А блок-схема получится огромная.. Согласен, немалая.. Я потом подумал, что мой способ не самый хороший - кажется, придумал попроще. Может, Klem4 так и сделал - посмотрю попозже.. ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Нике |
![]()
Сообщение
#13
|
Группа: Пользователи Сообщений: 4 Пол: Женский Репутация: ![]() ![]() ![]() |
Разобралась в программе, написанной klem4.
![]() Правда функция Crypt в принципе не нужна. т.к. по условию не требуется кодирование сообщения. А блок-схема получилась ого-го какая. ![]() Еще раз всем спасибо за помощь! Что бы я без вас делала =) ![]() Сообщение отредактировано: Нике - |
klem4 |
![]()
Сообщение
#14
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата Правда функция Crypt в принципе не нужна. т.к. по условию не требуется кодирование сообщения. Это я для удобства сделал чтобы не придумывать тесты ![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
FreeMan |
![]()
Сообщение
#15
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
Чтото типа этого должно сработать. провереть не могу
procedure decr(s:string):string; Сообщение отредактировано: FreeMan - -------------------- бб
|
Lapp |
![]()
Сообщение
#16
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Чтото типа этого должно сработать. провереть не могу Почему не можешь?.. Нет данных? Лови: строка 100100011000001000010100000110000001000100000000001110011000101000 должна декодироваться в a1a2a3 a4a5 a6 a2a4 a7a6a5 a8 -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
klem4 |
![]()
Сообщение
#17
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
FreeMan, не правильно твоя процедура работает ... вот ее компилирующийся вариант
![]() function decr(s:string):string; -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 11.02.2025 2:54 |