авітом, або використовуючи взагалі всі символи, а не тільки букви. Для завдання обраний метод з генерацією випадкового алфавіту. Цей метод, хоча і займає більше місця в оперативній пам'яті і за часом виконання на нього йде більше часу через генерації, він все одно вважається краще, тому що в підсумку має більш складно розбирається текст. Приміром, для того щоб розшифрувати текст зі зміщенням алфавіту необхідно дізнатися всього лише шифр однієї букви і на основі різниці в індексі знаків між цими літерами можна дізнатися інші літери. Для розшифровки ж методу з випадковим переміщенням необхідно дізнатися індекс кожної окремої літери.
Перш ніж зашифрувати вихідний текст створюється і ключ до розшифровки, за створення ключа відповідає окрема функція, яка викликається з іншої функції, пов'язаної з другим пунктом меню.
Результатом виконання другого пункту меню є створення і виведення зашифрованого тексту в файл Code.txt, а ключа розшифровки в файл Key.txt.
За запитом користувача також може бути показаний результат обчислень Індексу збігів букв в зашифрованому тексті через третій пункт у меню.
Для скорочення обсягу вихідного і для більшої читабельності коду програми використовуються функції. Функції дозволяють винести повторювані частини програми в окремий блок і викликати ці блоки в міру необхідності. Всього в програмі використано 7 функцій: main () - обов'язкова головна функція, за допомогою якої здійснюється виклик інших функцій.
int menu (int n) - функція, за допомогою якої здійснюється переміщення з графічного меню. Функції передається один параметр типу int, що показує кількість пунктів меню. Повертає дана функція обраний пункт меню.reader () - функція, яка зчитує вихідний текст.enigma () - функція, яка зашифровує вихідний текст, записує його у файл, також викликає дві інші функції генерацію звичайного алфавіту і генерацію зашифрованого алфавітаformul () - функція , зчитує текст з файлу і визначає кількість появ кожної окремої літери, після чого обчислює індекс збігів, за описаною в завданні формуле.fun_alphabet () - функція, яка генерує звичайний англійський алфавіт, також записує його у файл Key.txt для зручності расшіфровкі.fun_chipher () - функція, яка генерує випадковий алфавіт і записує його у файл Key.txt для зручності розшифровки.
2. Опис програми
У даній програмі були застосовані функції, що зберігаються в заголовних файлах стандартної бібліотеки C ++. Список заголовних файлів зі стандартної бібліотеки C ++, які у програмі (далі наведено функції, використовувані заголовними файлами в даній програмі):
iostream.h - в даному заголовному файлі реалізована підтримка введення/виведення даних вбудованих типів.
) cin;
) cout;
Виведення даних з потоку здійснюється за допомогою переобтяженого оператора зсуву вліво ( lt; lt;), а введення - за допомогою оператора зсуву вправо ( gt; gt;).
conio.h - оголошує кілька бібліотечних функцій для роботи з консольним вводом/виводом програми, створює текстовий інтерфейс користувача.
1) clrscr ();
) getch ();
) textbackground ();
) textattr ();
) window ();
6) gotoxy () .. h - заголовний файл, який містить у собі функції, що займаються, виділенням пам'яті, контролем процесу виконання програми, перетворення типів та ін. ();
rand ();
fstream.h - заголовний файл, що включає набір функцій, які надають інтерфейс для читання/запису даних з/в файл.
open (); () ;;;;. h - заголовний файл, що містить в собі функції роботи з рядками. ();
ctype.h - заголовний файл, що містить функції класифікації та перетворення символів.
isalpha ();
Перейдемо до опису програми:
char Alphabet [26];// Звичайний латинський алфавіт
char Chipher [26];// Згенерований випадково алфавітText [255];// Оригінальний текст
char Code [255];// Зашифрований текст
void reader ()
{input;// Створення файлової змінної читання з файлу
input.open ( Text.txt raquo ;, ios :: in);// Відкриття файлу, за допомогою цієї змінної (! Input) {}//Перевірка успішності відкриття файлу, якщо файл не відкритий, то виводиться повідомлення про помилку, після чого програма закривається (! Input.eof ()) {}//Читання з файла.close ();// Закриття вихідного файлу
}
void enigma ()
{
...