Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2019, 20:07   #1
__ka
 
Регистрация: 07.11.2019
Сообщений: 4
По умолчанию Нужна помощь в написании программы

Добрый вечер!
Для английского и русского алфавита. На вход поступает текст, его следует зашифровать. Каждой букве ставится в соответствии несколько чисел(Например, для буквы "А" - 23, 74, 55), если в тексте буквы повторяются, то число заменяется следующим. И дешифровать обратно в исходный текст.
Буду рад любой помощи))
__ka вне форума Ответить с цитированием
Старый 07.11.2019, 23:00   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

И это все на Паскале ?
Делаем двухмерный байтовый массив [M,N], Заполняем его не повторяющимися значениями. Координата первая - это Ord() кодируемого символа, вторая - разные варианты кодирования этого символа.
Если делать по уму , для чаще встречающихся символов надо бы больше вариантов кода, чтобы затруднить частотный анализ. Но для этого нужна статистика частоты символов в конкретном языке.
Но когда ж это учебные задания делались по уму
Вопрос: а что делать с пробелами, знаками препинания ?
digitalis вне форума Ответить с цитированием
Старый 08.11.2019, 00:07   #3
__ka
 
Регистрация: 07.11.2019
Сообщений: 4
По умолчанию

создал массив. не очень понимаю как каждой букве выделить собственный столбец
А Б В Г Д .... Я
55 14 44 47 4 ..... 71
12 30 17 87 77...... 1
сразу извиняюсь за свою тупость)
__ka вне форума Ответить с цитированием
Старый 08.11.2019, 04:53   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

digitalis, не будет ли слишком расточительно заводить массив для первой координаты по ord()? Там ведь дырок получается много. Что если завести строку с "алфавитом" (всеми нужными буквами) и в качестве первой координаты использовать pos() по этой строке.
__ka, уточните, какой именно паскаль, и лучше прикладывайте ваши наброски кода.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.11.2019, 11:25   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Так можно Ord() - const, предварительно отсортировав (проигнорировав) не попадающие в заданный интервал символы. Вариантов много, зависит от фантазии.
Можно, к примеру: 'F',33,45,97,121,64,0 . Первый элемент вектора - замещаемый символ, дальше - замещающие байты, 0 - конец вектора. Этим можно соблюсти выравнивание частот (#2) : для разных частот повторения символа - разная длина вектора.

Последний раз редактировалось digitalis; 08.11.2019 в 11:55.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в написании программы 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