uses crt;
var
password,codeline,original:string;
i:integer;
c:char;
procedure CodeDecode(x:integer);
var
j:integer;
begin
codeline:='';
{выводим оригинальную строку}
writeln(original);
for i:=1 to length(original)do
begin
{считаем корректирующее число}
j:=8*((1-x + pos(original[i],password)div 8)and 3)
+ pos(original[i],password)mod 8;
if j=0 then j:=32;
{кодирование-декодирование}
if pos(original[i],password)>0
then codeline:=codeline+password[j]{если символ есть в таблице кодируем-декодируем}
else codeline:=codeline+original[i];{если символа нет в таблице копируем без изменения}
end;
original:=codeline;{запоминаем новую строку}
writeln(codeline);{выводим результат}
end;
begin
{задаем кодируемый текст}
original:='контрольное слово или фраза задания';
{вводим пароль}
write('Enter password:');
password:='';
repeat
c:=ReadKey;
write(c);
if (pos(c,password)=0)and(c<>chr(13)) then password:=password+c;
until c=chr(13);
writeln;
password:='пароль';{контрольный пароль}
{дополнение русскими буквами таблицы кодирования}
for i:=160 to 175 do{а - р}
if pos(chr(i),password)=0 then password:=password+chr(i);
for i:=224 to 239 do{п - я}
if pos(chr(i),password)=0 then password:=password+chr(i);
{организовываем меню}
repeat
{выводим таблицу кодирования}
for i:=1 to length(password)do
begin
write(password[i]);
if (i mod 8)=0 then writeln;
end;
{выводим меню}
writeln('c-code',chr(10),chr(13),'d-decode',chr(10),chr(13),'q-quit');
c:=ReadKey;
{кодируем - декодируем}
if(c='c')or(c='d')then CodeDecode(2*(ord(c)-ord('c')));
until c='q';
ReadKey;
end.
бандерол
ьвгжзийк
мпстуфхц
чшщъыэюя
вылетаем пятого
пекзъвзч шлъйсй
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.