Program Shifr; var s1,s2,alf:string; i:integer; key, Kod:integer; //ключ шифрования f1,f2:text; BEGIN alf:=''; assign(f1,'Dannie.txt'); assign(f2,'Shifr.txt'); reset(f1); rewrite(f2); writeln('Введите ключ шифрования от 1 до 25:'); readln(key); while Not(Eof(f1)) do begin readln(f1,s1); s2:=''; for i:=1 to length(s1) do begin Kod:=Pos(s1[i],s1); Kod:=Kod+key; if Kod>26 then Kod:=Kod-26; if Kod<1 then Kod:=Kod+26; s2:=s2+alf[Kod]; key:=-key; end; writeln(f2,s2); end; close(f1); close(f2); END.
2544 / 2 = 1272, остаток 0
1272 / 2 = 636, остаток 0
636 / 2 = 318, остаток 0
318 / 2 = 159, остаток 0
159 / 2 = 79, остаток 1
79 / 2 = 39, остаток 1
39 / 2 = 19, остаток 1
19 / 2 = 9, остаток 1
9 / 2 = 4, остаток 1
4 / 2 = 2, остаток 0
2 / 2 = 1, остаток 0
1 / 2 = 0, остаток 1
Теперь выписываем остатки в обратном порядке:
100111110000
8563 / 2 = 4281, остаток 1
4281 / 2 = 2140, остаток 1
2140 / 2 = 1070, остаток 0
1070 / 2 = 535, остаток 0
535 / 2 = 267, остаток 1
267 / 2 = 133, остаток 1
133 / 2 = 66, остаток 1
66 / 2 = 33, остаток 0
33 / 2 = 16, остаток 1
16 / 2 = 8, остаток 0
8 / 2 = 4, остаток 0
4 / 2 = 2, остаток 0
2 / 2 = 1, остаток 0
1 / 2 = 0, остаток 1
Выписываем остатки в обратном порядке:
10000101110011