Студопедия — Система Цезаря с ключевым словом
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Система Цезаря с ключевым словом






unit Unit1

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, math, Unit2, Unit3;

type

TForm1 = class(TForm)

edit_key_word: TEdit;

Label1: TLabel;

edit_key_number: TEdit;

Label2: TLabel;

Memo1: TMemo;

Label3: TLabel;

Button1: TButton;

Button2: TButton;

Memo2: TMemo;

Memo3: TMemo;

Label4: TLabel;

Label5: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

function crypt_sym(x: widechar): widechar; // функция, которая будет заменять символ из шифруемого текста на символ из подстановки. Она при вызове принимает аргумент типа widechar и возвращает результат типа widechar

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

mass_1: array of char;

i, j, k, key_number: integer;

FLAG_1: boolean;

str_2, str_1, key_word: string;

str_text, str_text_1: widestring;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

setlength(str_1, 26);

for i:= 1 to 26 do //цикл для вывода алфавита

begin

str_1[i]:= chr(i + 96);

memo1.Lines[0]:= memo1.Lines[0] + str_1[i] + ' ';

end;end;

procedure TForm1.Button1Click(Sender: TObject);

begin

setlength(mass_1, 52);

setlength(str_2, 26); // в str_2 будем формировать подстановку

setlength(key_word, length(edit_key_word.Text)); // длина строки равна длине строки, полученной с формы

key_word:= edit_key_word.Text;

key_number:= strtoint(edit_key_number.Text);

k:= 1; // будем использовать в качестве индкса элемнтов mass_1

for i:= 1 to key_number do //цикл для заполнения первой чатсти массива

begin

FLAG_1:= true;

for j:= 1 to length(key_word) do // цикл проверяющий повторяется ли элемент алфавита. В строку пишутся только те, которых нет в key_word и которые располагаются до номера первой буквы ключевого слова

begin

if key_word[j] = str_1[i] then

begin

FLAG_1:= false;

break;

end; end;

if FLAG_1 = false then continue

else begin

str_2[k]:= str_1[i];

inc(k);

end; end;

for i:= 1 to length(key_word) do // цикл продолжающий заполнение массива

begin

str_2[k]:= key_word[i];

inc(k); end;

for i:= length(key_word) + 1 to 26 do

begin

FLAG_1:= true;

for j:= 1 to length(key_word) do // цикл проверяющий повторяется ли элемент алфавита. В строку не пишутся те буквы, которые есть в key_word

begin

if key_word[j] = str_1[i] then

begin

FLAG_1:= false;

break;

end; end;

if FLAG_1 = false then continue

else begin

str_2[k]:= str_1[i];

inc(k); end; end;

for i:= 1 to 26 do //цикл для вывода подстановки

begin

memo1.Lines[2]:= memo1.Lines[2] + str_2[i] + ' ';

end;

setlength(str_text, length(memo2.Lines[0])*memo2.Lines.Count); // задали длину такую, чтобы точно хватило

for i:= 0 to memo2.Lines.Count do // цикл для записи всего шифруемого текста в одну строку

begin

str_text:= str_text + memo2.Lines[i];

end;

for i:= 1 to length(str_text) do

begin

str_text_1[i]:= crypt_sym(str_text[i]); // присваиваем элементу строки результат функции crypt_sym(x: widechar): widechar

end;

memo3.Lines[0]:= str_text_1 // вывод зашифрованного текста

end;

function TForm1.crypt_sym (x: widechar): widechar;

var

num: integer; // здесь будет хранить номер в алфавите того элемента, который пришёл. А потом заменять пришедший символ на символ из строки подстановки с тем же номером. А алфавит у нас хранится в строке str_1

begin

num:= pos(x, str_1);

crypt_sym:= widechar(str_2[num]); // widechar это функция, преобразующая строку (в нашем случае символ типа char) типа string в строку типа widestring (символ типа widechar). Это необходимо, потому что шифруемый текст у нас будет храниться в строке типа widestring, а подстановка хранится в строке типа string

end;end.







Дата добавления: 2015-06-15; просмотров: 410. Нарушение авторских прав; Мы поможем в написании вашей работы!



Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Гальванического элемента При контакте двух любых фаз на границе их раздела возникает двойной электрический слой (ДЭС), состоящий из равных по величине, но противоположных по знаку электрических зарядов...

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

Тема 2: Анатомо-топографическое строение полостей зубов верхней и нижней челюстей. Полость зуба — это сложная система разветвлений, имеющая разнообразную конфигурацию...

Виды и жанры театрализованных представлений   Проживание бронируется и оплачивается слушателями самостоятельно...

Что происходит при встрече с близнецовым пламенем   Если встреча с родственной душой может произойти достаточно спокойно – то встреча с близнецовым пламенем всегда подобна вспышке...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия