Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Додатки. Лістинг програми “Plefer_upgrade” ⇐ ПредыдущаяСтр 4 из 4 Лістинг програми “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(); } //----------------- ----------------------------------------------------------
|