20.11.2012, 21:27 | #1 (permalink) |
Member
Регистрация: 10.05.2012
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Шифр Вижинера
Код:
program Project2; {$APPTYPE CONSOLE} uses SysUtils, Windows; Function menu:integer; //Вывод меню на экран var choice:integer; begin writeln; writeln (' ','1.Зашифровать текст.'); writeln (' ','2.Дешифровать текст.'); writeln (' ','3.Завершение работы.'); repeat writeln('Ваш выбор:'); readln(choice) until (choice>=1) or (choice<=3); Menu:=choice end; Procedure code(file_name,file_name1,file_name2:string); //кодировка текста var f,f1,f2: file of char; text,key:Char; t1,t2,t3:Integer; begin Assign(f,file_name); Assign(f1,file_name1); Assign(f2,file_name2); Reset(f); Reset(f1); Rewrite(f2); while not Eof(f) do begin read(f,text); read(f1,key); t1:=ord(Text) mod 256; t2:=ord(Key) mod 256; t3:=t1+t2; text:=chr(t3); write(f2,text); write(text) end; Close(f); Close(f1); Close(f2) end; Procedure decode(file_name,file_name1,file_name2:string);// декодировка текста var f,f1,f2: textfile; text,key:Char; t1,t2,t3:Integer; begin Assign(f,file_name); Assign(f1,file_name1); Assign(f2,file_name2); Reset(f); Reset(f1); Rewrite(f2); while not Eof(f) do begin read(f,text); read(f1,key); t1:=ord(Text) mod 256; t2:=ord(Key) mod 256; t3:=t1-t2; text:=chr(t3); write(f2,text); write(text) end; Close(f); Close(f1); Close(f2) end; var exit_,file_name,file_name1,file_name2:string; mn:Integer; begin SetConsoleOutputCP(1251); SetConsoleCP(1251); Repeat mn:=Menu; case mn of 1:begin Writeln('Введите имя файла текста для кодировки: '); Readln(file_name); Writeln('Введите имя файла с ключом '); Readln(file_name1); Writeln('Введите имя файла для сохранения закодированного текста '); Readln(file_name2); code(file_name,file_name1,file_name2); end; 2: begin Writeln('Введите имя файла текста для кодировки: '); Readln(file_name); Writeln('Введите имя файла с ключом '); Readln(file_name1); Writeln('Введите имя файла для сохранения закодированного текста '); Readln(file_name2); decode(file_name,file_name1,file_name2); end; end; //case if mn<>3 then begin Writeln; write (' ','Завершить работу? (Y/N)'); readln (exit_); writeln end; UNTIL (exit_='y') or (exit_='Y') or (mn=3) end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|