Рассмотрим алфавит состоящий из следующих символов:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F Алфавит состоит из 16 симолов (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) Мощность: 16
<u><em>*** 1 ***</em></u> // PascalABC.NET 3.1, сборка 1267 от 10.07.2016 begin var w:='КОМПЬЮТЕР'; Writeln(w[1:4]); Writeln((w.Right(3).Inverse)+w[w.Length]+w[2]); Writeln(w[w.Length]+w[2::-1]) end.
<u><em>Результат</em></u> КОМ РЕТРО РОК
<u><em>*** 2 ***</em></u> // PascalABC.NET 3.1, сборка 1267 от 10.07.2016 begin var w:='КОМПЬЮТЕР'; var i:=ReadInteger('i='); Swap(w[i],w[w.Length]); Writeln(w) end.
<u><em>Тестовое решение</em></u> i= 5 КОМПРЮТЕЬ
<u><em>*** 3 ***</em></u> // PascalABC.NET 3.1, сборка 1267 от 10.07.2016 begin var w:='ПАР'; // исходное слово var k:=4; // константа сдвига шифра Цезаря var a:='АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГ'; for var i:=1 to w.Length do begin var p:=Pos(w[i],a); if p>0 then w[i]:=a[p+k] end; Writeln(w) end.
1. Определим размер алфавита, т.е. количество используемых символов. 20 букв и 9 цифр - это 29 символов. Чтобы закодировать 29 разных символов нужно 5 бит ( 2⁴ < 29 < 2⁵ ). 2. Определим длину личного кода. В коде 15 символов, каждый символ занимает 5 бит. Всего потребуется 5×15=75 бит. Поскольку код занимает целое число байт, переводит 75 бит в байты. 75/8 = 9.375 ≈ 10 байт. 3. Номер отдела можно закодировать 1 байтом (в байт помещается число от 0 до 255). 4. Найдем количество дополнительных байт. На пропуске 20 байт, из них 10 заняты кодом, 1 - номером отдела, остаются 20-10-1 = 9 байт.