Консультация № 197399
13.12.2019, 15:56
0.00 руб.
13.12.2019, 16:08
0 4 0
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
что я написал не так? программа не работает, pascalabc

Напишите программу генерации шифра для заданных a и s по формуле:
Ci = (a*Pi + s) mod N ,
где Pi – порядковый номер символа открытого текста (0 ≤ Pi ≤ N-1);
Ci – порядковый номер символа зашифрованного текста (0 ≤ Ci ≤ N-1);
N – размер алфавита;
a – десятичный коэффициент;
s – коэффициент сдвига.
Вот задание:
Напишите программы шифрования и расшифрования для метода моноалфавитной подстановки по заданному шифру. Язык русский. Шифр, открытый текст и зашифрованный текст должны находиться в текстовых файлах. Тестовый файл с открытым текстом должен содержать не менее 1000 символов текста художественного произведения.
И что изменить в программе, чтобы наоборот дешифровать текст?

Приложение:
function Shifr(self:string;a,s:real):string; extensionmethod;
result:=self.tochararray.select(x->ChrAnsi(byte(integer(a*OrdAnsi(x)+s) mod 255)).joinintostring
begin
readalltext('in.txt').shifr(readlnreal('Введите десятичный коэффициент'),readlnreal('Введите коэффициент сдвига')).writealltext('out.txt');
end.

Обсуждение

давно
Старший Модератор
31795
6196
13.12.2019, 16:24
общий
Обратите внимание на эту консультацию.Спасибо!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Профессор
401888
1232
13.12.2019, 16:32
общий
Адресаты:
Я не умею писать по Net-овски.
давно
Студент
400828
51
13.12.2019, 22:48
общий
Здравствуйте!
Подумайте над следующим алгоритмом (приведу фрагмент):
const alphabet='абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
...
l=length(alphabet);
...
c:=(очередная буква шифруемого сообщения)
p:=pos(c, alphabet); //место буквы в алфавите
...
shift:=(величина сдвига буквы по алфавиту в шифрованном сообщении)
...
// наивное решение:
codedletter:=alphabet[p+shift]; // рискуем вылететь за длину алфавита
...
// вместо этого можно:
if p+shift<=l then
codedletter:=alphabet[p+shift]
else
codedletter:=alphabet[(p+shift) mod l]
// ветвь else "закольцовывает" алфавит
Об авторе:
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
давно
Старший Модератор
31795
6196
17.12.2019, 17:18
общий
Адресаты:
Цитата: sashenka0901
Напишите программы шифрования и расшифрования

Если Вы думаете, что Вам создадут открытый и закрытый ключ RSA, то это не сюда.
Программу менять не нужно, важны только входные параметры.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа