
- •«Мордовский государственный университет им. Н. П. Огарёва»
- •Курсовая работа Программа на языке с
- •«Мордовский государственный университет им. Н. П. Огарёва»
- •Задание на курсовую работу
- •4.6 Исходный код
- •4.7 Пример выполнения
- •4.8 Пример выполнения
- •Алгоритмы, основанные на операции «исключающее или» (xor).
- •Алгоритмы, основанные на алфавитных перестановках.
- •Постановка задачи
- •Описание алгоритма
- •Исходный код
- •Пример выполнения
Исходный код
#include <stdio.h>
#include <string.h>
// файлы, буферы ввода, счетчики
FILE *f1, *f2;
char s[105], *pos;
int code, k = 0;
// ключ шифрования
const int key[10] = { 5, 20, 3, 24, 22, 12, 13, 1, 2, 9 };
int main()
{
// ввод имени входного файла
printf("Enter file name: ");
scanf("%100s", s);
// открытие входного файла
if((f1 = fopen(s, "r")) == NULL)
{
printf("Can't open input file!\n");
return -1;
}
// поиск точки в имени файла (с конца)
pos = strrchr(s, '.');
if(pos == NULL) pos = s + strlen(s);
// замена/добавление нового расширения
pos[0] = '.';
pos[1] = 'o';
pos[2] = 'u';
pos[3] = 't';
pos[4] = '\0';
// открытие выходного файла
if((f2 = fopen(s, "w")) == NULL)
{
printf("Can't create/open output file!\n");
return -1;
}
// читаем посимвольно входной файл
while((code = fgetc(f1)) != EOF)
{
if(code >= 'A' && code <= 'Z')
{
// шифрование большой буквы
code = 'A' + ((code - 'A' + key[k]) % 26);
}
else if(code >= 'a' && code <= 'z')
{
// шифрование прописной буквы
code = 'a' + ((code - 'a' + key[k]) % 26);
}
// выводим результат в файл
fputc(code, f2);
// увеличиваем k
++k;
if(k >= 10) k = 0;
}
// закрываем файлы, выводим сообщение о завершении
printf("Work finished! Look file %s\n", s);
fcloseall();
return 0;
}
Пример выполнения
Ключ:
const int key[10] = { 5, 20, 3, 24, 22, 12, 13, 1, 2, 9 };
Исходный текст (text.txt):
Запуск программы:
Зашифрованный текст (text.out):
Список литературы:
1. Б.Керниган, Д.Ритчи, А.Фьюер. Язык программирования Си. Задачи по языку Си. М.: Финансы и статистика, 1985.
2. М.Уэйт, С.Прата, Д.Мартин. Язык Си. Руководство для начинающих. - М.: Мир, 1988.
3. М.Болски. Язык программирования Си. Справочник. - М.: Радио и связь, 1988.
4. Л.Хэнкок, М.Кригер. Введение в программирование на языке Си. - М.: Радио и связь, 1986.
5. М.Дансмур, Г.Дейвис. ОС UNIX и программирование на языке Си. - М.: Радио и связь, 1989.