![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
AntiSanta |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Продвинутые Сообщений: 7 Регистрация: 1.11.2012 Город: Питер Учебное заведение: OmskSpecial #666 ![]() |
Здравствуйте!
Получил от учителя задание: написать на TurboPascal шифратор и дешифратор по шифру Виженера. Помогите, пожалуйста, составить эти 2-е программы. Я нашел 2 варианта шифратора, но они дают разные результаты, что меня настораживает: 1: program p1; var a,kl,sh:string; th: array[1..255] of Char; ch,dh,ah:array[1..255] of integer; l,d,i,i2:integer; BEGIN i2:=0; writeln('Input key:'); readln(kl); writeln('Input word:'); readln(sh); l:=Length(kl); for i:=1 to l do case kl of 'a': ch[i]:=0; 'b': ch[i]:=1; 'c': ch[i]:=2; 'd': ch[i]:=3; 'e': ch[i]:=4; 'f': ch[i]:=5; 'g': ch[i]:=6; 'h': ch[i]:=7; 'i': ch[i]:=8; 'j': ch[i]:=9; 'k': ch[i]:=10; 'l': ch[i]:=11; 'm': ch[i]:=12; 'n': ch[i]:=13; 'o': ch[i]:=14; 'p': ch[i]:=15; 'q': ch[i]:=16; 'r': ch[i]:=17; 's': ch[i]:=18; 't': ch[i]:=19; 'u': ch[i]:=20; 'v': ch[i]:=21; 'w': ch[i]:=22; 'x': ch[i]:=23; 'y': ch[i]:=24; 'z': ch[i]:=25; end; for i:=1 to Length(sh) do begin case sh[i] of 'a': dh[i]:=0; 'b': dh[i]:=1; 'c': dh[i]:=2; 'd': dh[i]:=3; 'e': dh[i]:=4; 'f': dh[i]:=5; 'g': dh[i]:=6; 'h': dh[i]:=7; 'i': dh[i]:=8; 'j': dh[i]:=9; 'k': dh[i]:=10; 'l': dh[i]:=11; 'm': dh[i]:=12; 'n': dh[i]:=13; 'o': dh[i]:=14; 'p': dh[i]:=15; 'q': dh[i]:=16; 'r': dh[i]:=17; 's': dh[i]:=18; 't': dh[i]:=19; 'u': dh[i]:=20; 'v': dh[i]:=21; 'w': dh[i]:=22; 'x': dh[i]:=23; 'y': dh[i]:=24; 'z': dh[i]:=25; end; end; for i:=1 to Length(sh) do begin if (i <= l) then ah[i] := ch[i] + dh[i] else if ((i mod l) <> 0) then ah[i] := ch[i mod l] + dh[i] else ah[i] := ch[Length(kl)] + dh[i]; if (ah[i]>25) then ah[i]:=ah[i]-26; end; for i:=1 to Length(sh) do begin case ah[i] of 0: th[i]:='a'; 1: th[i]:='b'; 2: th[i]:='c'; 3: th[i]:='d'; 4: th[i]:='e'; 5: th[i]:='f'; 6: th[i]:='g'; 7: th[i]:='h'; 8: th[i]:='i'; 9: th[i]:='j'; 10: th[i]:='k'; 11: th[i]:='l'; 12: th[i]:='m'; 13: th[i]:='n'; 14: th[i]:='o'; 15: th[i]:='p'; 16: th[i]:='q'; 17: th[i]:='r'; 18: th[i]:='s'; 19: th[i]:='t'; 20: th[i]:='u'; 21: th[i]:='v'; 22: th[i]:='w'; 23: th[i]:='x'; 24: th[i]:='y'; 25: th[i]:='z'; end; end; writeln('cipher text: '); writeln(th); readln; end. [i]2: program vigener; uses crt; var a,b,c,d:string; i,j,k,t,s:integer; key:array [1..100]of integer; begin clrscr; writeln('Vvedite text '); readln(a); b:='AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'; writeln('Vvedite kliucevoe slovo '); readln(d); for i:=1 to length(d) do begin for j:=1 to length(b) do begin if d[i]=b[j] then key[i]:=(j+1) div 2; end;end; for i:=1 to length(a) do begin for j:=1 to length(b) do begin s:= (i-1) mod length(d) +1; t:=key[s]; k:=(j+2*t-1) mod length(b)+1; if a[i]=b[j] then c:=c+b[k]; end;end; writeln('Rezultat: '); writeln©; readln; end. Прошу Вашей помощи. Заранее благодарен! |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 28.5.2025, 7:08 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru