• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Шифр Вижинера

gabriela

Новые
Регистрация
10 Май 2012
Сообщения
20
Реакции
0
Баллы
0
Шифр Вижинера

Код:
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) в первой процедуре и кодирует только несколько первых символов из файла
 
Назад
Сверху