|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.11.2019, 20:07 | #1 |
Регистрация: 07.11.2019
Сообщений: 4
|
Нужна помощь в написании программы
Добрый вечер!
Для английского и русского алфавита. На вход поступает текст, его следует зашифровать. Каждой букве ставится в соответствии несколько чисел(Например, для буквы "А" - 23, 74, 55), если в тексте буквы повторяются, то число заменяется следующим. И дешифровать обратно в исходный текст. Буду рад любой помощи)) |
07.11.2019, 23:00 | #2 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,619
|
И это все на Паскале ?
Делаем двухмерный байтовый массив [M,N], Заполняем его не повторяющимися значениями. Координата первая - это Ord() кодируемого символа, вторая - разные варианты кодирования этого символа. Если делать по уму , для чаще встречающихся символов надо бы больше вариантов кода, чтобы затруднить частотный анализ. Но для этого нужна статистика частоты символов в конкретном языке. Но когда ж это учебные задания делались по уму Вопрос: а что делать с пробелами, знаками препинания ? |
08.11.2019, 00:07 | #3 |
Регистрация: 07.11.2019
Сообщений: 4
|
создал массив. не очень понимаю как каждой букве выделить собственный столбец
А Б В Г Д .... Я 55 14 44 47 4 ..... 71 12 30 17 87 77...... 1 сразу извиняюсь за свою тупость) |
08.11.2019, 04:53 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
digitalis, не будет ли слишком расточительно заводить массив для первой координаты по ord()? Там ведь дырок получается много. Что если завести строку с "алфавитом" (всеми нужными буквами) и в качестве первой координаты использовать pos() по этой строке.
__ka, уточните, какой именно паскаль, и лучше прикладывайте ваши наброски кода.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
08.11.2019, 11:25 | #5 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,619
|
Так можно Ord() - const, предварительно отсортировав (проигнорировав) не попадающие в заданный интервал символы. Вариантов много, зависит от фантазии.
Можно, к примеру: 'F',33,45,97,121,64,0 . Первый элемент вектора - замещаемый символ, дальше - замещающие байты, 0 - конец вектора. Этим можно соблюсти выравнивание частот (#2) : для разных частот повторения символа - разная длина вектора. Последний раз редактировалось digitalis; 08.11.2019 в 11:55. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужна помощь в написании программы | vadim_81 | Общие вопросы по Java, Java SE, Kotlin | 0 | 21.09.2014 14:13 |
Нужна помощь в написании программы. | DelphiMan | Работа с сетью в Delphi | 14 | 31.01.2009 23:19 |
Нужна помощь в написании программы. | GhosT3Ds | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 23.12.2007 07:45 |