Магу нужно срочно передать повстанцам сообщение. Однако перед этим сообщение (не длиннее 32 символов) следует зашифровать. Метод заключается в следующем: для каждой буквы существует ее уникальный код от нуля до 255, определяющейся по специальной таблице, называемой ASCII (Arkon’s Standard Code for Information Interchange). После этого код преобразовывается в двоичную систему (256 комбинаций от 00000000 до 11111111). Не шифруются пробелы и знаки препинания (‘.,!?»:;-()’).
Разумеется, Безымянному не хочется разбираться во всей этой чепухе, поэтому он доверяет процедуру шифровки вам.
Формат ввода:
S — строка, которую необходимо зашифровать.
Формат вывода:
E — зашифрованное сообщение.
Пример ввода
SOS!
Пример вывода:
010100110100111101010011!
uses CRT;
{
* DecTo
* Конвертирование Системы счисления
* из десятично в любую другую (до основания 36)
}
function DecTo(chislo : integer; osnovanie : byte; bytes : byte) : string;
const hash_table : string = '0123456789abcdefghijklmnopqrstuvwxyz';
var otvet : string;
t, i : integer;
begin
otvet := '';
while chislo >= osnovanie do
begin
otvet := hash_table[(chislo mod osnovanie)+1] + otvet;
chislo := chislo div osnovanie;
end;
if chislo=osnovanie then
otvet := hash_table[chislo] + otvet
else
otvet := hash_table[chislo + 1] + otvet;
if length(otvet)<bytes * 8 then
begin
{ добавляем нули вначало }
t :=bytes * 8 - length(otvet);
for i:= 1 to t do otvet := '0'+otvet;
end;
DecTo := otvet;
end;
var s : string[32];
e : string;
i : integer;
begin
ClrScr;
WriteLn('Введите строку, чтобы зашифровать : ');
ReadLn(s);
{ шифруем }
e := '';
for i:=1 to length(s) do
if not (s[i] in ['.',',','!','?','"',':',';','-','(',')']) then
e := e + decTo(ord(s[i]), 2, 1)
else
e := e + s[i];
WriteLn('Зашифрованная строка :');
WriteLn(e);
ReadLn;
end.