Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 20.11.2012, 21:27   #1 (permalink)
gabriela
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.
выделяет read(f1,key1) в первой процедуре и кодирует только несколько первых символов из файла
gabriela вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 17:04.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.