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

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

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






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; просмотров: 416. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

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

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

Особенности массовой коммуникации Развитие средств связи и информации привело к возникновению явления массовой коммуникации...

Мотивационная сфера личности, ее структура. Потребности и мотивы. Потребности и мотивы, их роль в организации деятельности...

Классификация ИС по признаку структурированности задач Так как основное назначение ИС – автоматизировать информационные процессы для решения определенных задач, то одна из основных классификаций – это классификация ИС по степени структурированности задач...

Внешняя политика России 1894- 1917 гг. Внешнюю политику Николая II и первый период его царствования определяли, по меньшей мере три важных фактора...

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