Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Додатки. Лістинг програми “Plefer_upgrade”





Лістинг програми “Plefer_upgrade”

#include <vcl.h>

#include "stdio.h"

#include "conio.h"

#include "windows.h"

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

const char UPPER_DECODED[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

const char UPPER_ENCODED[] = "ZYXWVUTSRQPONMLKJIHGFEDCBA";

const char LOWER_DECODED[] = "abcdefghijklmnopqrstuvwxyz";

const char LOWER_ENCODED[] = "zyxwvutsrqponmlkjihgfedcba";

#include <string.h>

#include <ctype.h>

TForm1 *Form1;

AnsiString Al = "ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯabcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя!@\"#№$;%^:&?*()-_+={}[]\\/<>.,~`0123456789";

AnsiString MyText = ""; // Введений текст

AnsiString Key = ""; // Введений ключ

AnsiString R = ""; // Отримана решітка

AnsiString ResText = ""; // Отриманий текст

AnsiString Pust = ""; // Порожняк

char Resh[10][16]; // Масив літер решітки

AnsiString Dir; // Директорія для знаходження програми

//* Початкові умови при появі Форми на екрані *//

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

Form1->Edit1->Text = " ";

Form1->Button1->Enabled = true;

Form1->Button2->Enabled = true;

Form1->Button3->Enabled = false;

Form1->RadioButton1->Checked = true;

Form1->Label2->Caption = Form1->Memo1->Text.Length();

Form1->Label3->Caption = Form1->Memo2->Text.Length();

Dir = GetCurrentDir();

}

//* Функція відкриття файлу на копю'тері *//

void OpenText()

{

if (Form1->OpenDialog1->Execute())

{

MessageBox(NULL, "Не можливо відкрити файл!", "Виникла помилка!", MB_OK);

Form1->Memo1->Clear();

Form1->Memo2->Clear();

Form1->Memo3->Clear();

Form1->Label2->Caption = Form1->Memo1->Text.Length();

Form1->Label3->Caption = Form1->Memo2->Text.Length();

Form1->Button2->Enabled = false;

Form1->Button3->Enabled = false;

}

else

{

// Обнуляємо всі умови

Form1->ProgressBar1->Position = 0;

Form1->Memo1->Clear();

Form1->Memo2->Clear();

Form1->Memo3->Clear();

MyText = "";

Key = "";

R = "";

ResText = "";

Pust = "";

for (int i=0; i<10; i++)

for (int j=0; j<16; j++)

Resh[i][j] = NULL;

Form1->Memo1->Lines->LoadFromFile(Form1->OpenDialog1->FileName);

Form1->Label2->Caption = Form1->Memo1->Text.Length();

Form1->Label3->Caption = Form1->Memo2->Text.Length();

Form1->Button2->Enabled = true;

Form1->Button3->Enabled = false;

}

}

//* Функція перевірки повтору літер *//

bool CheckKey()

{

for (int i=1; i<=Key.Length(); i++)

for (int j=1; j <= Key.Length(); j++)

if ((Key[i] == Key[j]) && (i!= j))

return false;

return true;

}

//* Функція створення і виводу решітки на форму *//

void CreateR()

{

Form1->Memo3->Clear();

R = Key;

 

AnsiString Alphabet = Al;

for (int i=1; i<=Key.Length(); i++)

for (int j=1; j<=Alphabet.Length(); j++)

if (Key[i] == Alphabet[j])

Alphabet = Alphabet.Delete(j,1);

R += Alphabet; // Створили рядкок з решітки

int num = 1;

AnsiString Str = "";

for (int i=0; i<10; i++)

{

Str = "";

for (int j=0; j<16; j++)

{

Str += R[num];

if (j!= 16)

Str += " ";

num++;

}

Form1->Memo3->Lines->Add(Str);

}

// Заповняємо масив літер решітки

num = 1;

for (int i=0; i<10; i++)

for (int j=0; j<16; j++)

{

Resh[i][j] = R[num];

num++;

}

}

//* Функція вибору символу-порожняка *//

void ChoosePust()

{

int k = 0;

int m = 1000;

for (int i=1; i<=R.Length(); i++)

{

for (int j=1; j<=MyText.Length(); j++)

if (R[i] == MyText[j])

k++;

if (k<m)

{

m = k;

k = 0;

Pust = R[i];

}

}

}

//* Функція вставлення порожняків і перевірки тексту на скінченність *//

void EditText()

{

ChoosePust(); // обираємо прожняк

// Вставляємо прожняки в повторювані комірки Біграма

for (int i=1; i<MyText.Length(); i++)

if (MyText[i] == MyText[i+1])

MyText = MyText.Insert(Pust,i+1);

//* Перевіряємо текст на парність і якщо він не парний тоді вставляємо в кінець довільний символ *//

int Len = MyText.Length();

if (Len % 2!= 0)

MyText += Pust;

}

//* Функція шифрування тексту *//

void Encrypt()

{

ResText = "";

Form1->ProgressBar1->Position = 0;

Form1->ProgressBar1->Min = 0;

Form1->ProgressBar1->Max = MyText.Length();

// індекси літер в стовпцях

int ind_x1 = 0;

int ind_y1 = 0;

int ind_x2 = 0;

int ind_y2 = 0;

int k = 1;

while (k<MyText.Length())

{

for (int i=0; i<10; i++)

for (int j=0; j<16; j++)

{

if (MyText[k] == Resh[i][j])

{

ind_x1 = i;

ind_y1 = j;

}

if (MyText[k+1] == Resh[i][j])

{

ind_x2 = i;

ind_y2 = j;

}

}

// Якщо літери знаходяться в одному рядку

if (ind_x1 == ind_x2)

{

if (ind_y1 == 15)

{

ResText += Resh[ind_x1][0];

ResText += Resh[ind_x2][ind_y2+1];

}

else

if (ind_y2 == 15)

{

ResText += Resh[ind_x1][ind_y1+1];

ResText += Resh[ind_x2][0];

}

else

{

ResText += Resh[ind_x1][ind_y1+1];

ResText += Resh[ind_x2][ind_y2+1];

}

}

// Якщо літери знаходяться в одному стовпці

if (ind_y1 == ind_y2)

{

if (ind_x1 == 9)

{

ResText += Resh[0][ind_y1];

ResText += Resh[ind_x2+1][ind_y2];

}

else

if (ind_x2 == 9)

{

ResText += Resh[ind_x1+1][ind_y1];

ResText += Resh[0][ind_y2];

}

else

{

ResText += Resh[ind_x1+1][ind_y1];

ResText += Resh[ind_x2+1][ind_y2];

}

}

// Якщо літери знаходяться в різних рядках в різних стовпцях

if ((ind_x1!= ind_x2) && (ind_y1!= ind_y2))

{

ResText += Resh[ind_x1][ind_y2];

ResText += Resh[ind_x2][ind_y1];

}

k = k + 2;

Form1->ProgressBar1->StepBy(2);

}

Form1->Memo2->Lines->Add(ResText);

Form1->Label3->Caption = Form1->Memo2->Text.Length();

Form1->Button3->Enabled = true;

MessageBox(NULL, "Текст успішно зашифровано!", "Вітаю!", MB_OK);

}

//* Функція розшифрування тексту *//

void Decrypt()

{

ResText = "";

Form1->ProgressBar1->Position = 0;

Form1->ProgressBar1->Min = 0;

Form1->ProgressBar1->Max = MyText.Length();

// індекси літер в стовпцях

int ind_x1 = 0;

int ind_y1 = 0;

int ind_x2 = 0;

int ind_y2 = 0;

int k = 1;

while (k<MyText.Length()-2)

{

for (int i=0; i<10; i++)

for (int j=0; j<16; j++)

{

if (MyText[k] == Resh[i][j])

{

ind_x1 = i;

ind_y1 = j;

}

if (MyText[k+1] == Resh[i][j])

{

ind_x2 = i;

ind_y2 = j;

}

}

// Якщо літери знаходяться в одному рядку

if (ind_x1 == ind_x2)

{

if (ind_y1 == 0)

{

ResText += Resh[ind_x1][15];

ResText += Resh[ind_x2][ind_y2-1];

}

else

if (ind_y2 == 0)

{

ResText += Resh[ind_x1][ind_y1-1];

ResText += Resh[ind_x2][15];

}

else

{

ResText += Resh[ind_x1][ind_y1-1];

ResText += Resh[ind_x2][ind_y2-1];

}

}

// Якщо літери знаходяться в одному стовпці

if (ind_y1 == ind_y2)

{

if (ind_x1 == 0)

{

ResText += Resh[9][ind_y1];

ResText += Resh[ind_x2-1][ind_y2];

}

else

if (ind_x2 == 0)

{

ResText += Resh[ind_x1-1][ind_y1];

ResText += Resh[9][ind_y2];

}

else

{

ResText += Resh[ind_x1-1][ind_y1];

ResText += Resh[ind_x2-1][ind_y2];

}

}

// Якщо літери знаходяться в різних рядках в різних стовпцях

if ((ind_x1!= ind_x2) && (ind_y1!= ind_y2))

{

ResText += Resh[ind_x1][ind_y2];

ResText += Resh[ind_x2][ind_y1];

}

k = k + 2;

Form1->ProgressBar1->StepBy(2);

}

Form1->Memo2->Lines->Add(ResText);

Form1->Label3->Caption = Form1->Memo2->Text.Length();

Form1->Button3->Enabled = true;

MessageBox(NULL, "Текст успішно розшифровано!", "Вітаю!", MB_OK);

}

//* Функция сохранения зашифрованного текста *//

void FileSave()

{

if (Form1->RadioButton1->Checked == true)

{

Form1->Memo2->Lines->SaveToFile(Dir + "\\encrypted.txt");

MessageBox(NULL, "Результат збережено у файл encrypted.txt в папці з програмою", "Вітаю!", MB_OK);

Form1->Button3->Enabled = false;

Form1->ProgressBar1->Position = 0;

}

if (Form1->RadioButton2->Checked == true)

{

Form1->Memo2->Lines->SaveToFile(Dir + "\\decrypted.txt");

MessageBox(NULL, "Вітаю!", "Результат збережено у файл decrypted.txt в папке с програмою", MB_OK);

Form1->Button3->Enabled = false;

Form1->ProgressBar1->Position = 0;

}

}

//* Кнопка "Відкрити файл" *//

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if(OpenDialog1->Execute())

Memo1->Lines->LoadFromFile(OpenDialog1->FileName);

}

//*Кнопка "Старт" *//

void __fastcall TForm1::Button2Click(TObject *Sender)

{

if (Form1->Memo1->Text.Length() == 0)

MessageBox(NULL, "Сталася помилка!", "Немає тексту для шифрування!", MB_OK);

else

{

MyText = Form1->Memo1->Text;

Key = Form1->Edit1->Text;

if (!CheckKey())

MessageBox(NULL, "Сталася помилка!", "Ключове слово має повторювані символи!", MB_OK);

else

{

Form1->Memo2->Clear();

if (Form1->RadioButton1->Checked == true)

{

CreateR();

EditText();

DWORD id = 0;

HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Encrypt, NULL, 0, &id);

}

if (Form1->RadioButton2->Checked == true)

{

CreateR();

DWORD id = 0;

HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Decrypt, NULL, 0, &id);

}

}

}

}

//* Кнопка "Зберегти" *//

void __fastcall TForm1::Button3Click(TObject *Sender)

{

if(Memo3->Modified)

if(SaveDialog1->Execute())

Memo3->Lines->SaveToFile(SaveDialog1->FileName);

}

//* Вибрана функція "Шифрувати" *//

void __fastcall TForm1::RadioButton1Click(TObject *Sender)

{

Form1->Memo2->Clear();

Form1->Memo3->Clear();

Form1->Label2->Caption = Form1->Memo1->Text.Length();

Form1->Label3->Caption = Form1->Memo2->Text.Length();

Form1->Button3->Enabled = false;

Form1->ProgressBar1->Position = 0;

}

//* Вибрана функція "Розшифрувати" *//

void __fastcall TForm1::RadioButton2Click(TObject *Sender)

{

Form1->Memo2->Clear();

Form1->Memo3->Clear();

Form1->Label2->Caption = Form1->Memo1->Text.Length();

Form1->Label3->Caption = Form1->Memo2->Text.Length();

Form1->Button3->Enabled = false;

Form1->ProgressBar1->Position = 0;

}

//* Кнопка "Про програму" *//

void __fastcall TForm1::Button4Click(TObject *Sender)

{

AboutBox->ShowModal();

}

//*Кнопка "Очистити" *//

void __fastcall TForm1::Button5Click(TObject *Sender)

{

Form1->Memo1->Clear();

Form1->Label2->Caption = Form1->Memo1->Text.Length();

}

//* Кнопка "Копіювати" *//

void __fastcall TForm1::Button6Click(TObject *Sender)

{

Form1->Memo1->Text = Form1->Memo2->Text;

Form1->Memo2->Clear();

Form1->Memo3->Clear();

Form1->Label2->Caption = Form1->Memo1->Text.Length();

Form1->Label3->Caption = Form1->Memo2->Text.Length();

}

//---------------------------------------------------------------------------

//* Зміна вкладки в програмі *//

void __fastcall TForm1::TabControl1Change(TObject *Sender)

{

if(TabControl1->TabIndex==0)

{

GroupBox1->Visible=true;

GroupBox2->Visible=true;

GroupBox3->Visible=true;

RadioButton1->Visible=true;

RadioButton2->Visible=true;

RadioGroup1->Visible=true;

Button7->Visible=false;

Button4->Visible=false;

Edit2->Visible=false;

Edit3->Visible=false;

Label4->Visible=false;

Label5->Visible=false;

}

if(TabControl1->TabIndex==1)

{

GroupBox1->Visible=false;

GroupBox2->Visible=false;

GroupBox3->Visible=false;

Button7->Visible=true;

Button4->Visible=true;

Edit2->Visible=true;

Edit3->Visible=true;

Label4->Visible=true;

Label5->Visible=true;

RadioButton1->Visible=false;

RadioButton2->Visible=false;

RadioGroup1->Visible=false;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N7Click(TObject *Sender)

{

ShowMessage("Зкрити програму?");

Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)

{

if(SaveDialog1->Execute())

Memo3->Lines->SaveToFile(SaveDialog1->FileName);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)

{

if(SaveDialog1->Execute())

Memo3->Lines->SaveToFile(SaveDialog1->FileName);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N4Click(TObject *Sender)

{

Form1->Memo1->Text = Form1->Memo2->Text;

Form1->Memo2->Clear();

Form1->Memo3->Clear();

Form1->Label2->Caption = Form1->Memo1->Text.Length();

Form1->Label3->Caption = Form1->Memo2->Text.Length();

}

//----------------- ----------------------------------------------------------

Date: 2015-07-24; view: 416; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию