В одной из многочисленных пещер Миртаны Безымянный встретил мага огня по имени Аркон. Аркон обладает древним артефактом, однако отдать его Безымянному он готов только после того, как тот выполнит его задание — Pascal(Паскаль)

Магу нужно срочно передать повстанцам сообщение. Однако перед этим сообщение (не длиннее 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.

Leave a Comment

− 1 = 1