Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

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

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

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

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

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в написании программы vadim_81 Общие вопросы по Java, Java SE, Kotlin 0 21.09.2014 14:13
Нужна помощь в написании программы. DelphiMan Работа с сетью в Delphi 14 01.02.2009 00:19
Нужна помощь в написании программы. GhosT3Ds Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2007 08:45