Шифрования слова на английском языке путем перемешивания букв - C (СИ)
Формулировка задачи:
Составить алгоритм и написать приложение для шифрования слова на
английском языке путем перемешивания букв (например, первой буквы с четвертой, второй –
с пятой и т.д.) и добавления новых символов. В программе вывести исходное слово,
закодированное и декодированное.
Решение задачи: «Шифрования слова на английском языке путем перемешивания букв»
textual
Листинг программы
#include <stdio.h> // подключаем библиотеку ввода вывода #include <string.h> // библиотека работы со строками int inputs(char *s, char *dop, int n) // функция ввода с проверкой { puts("entr input line"); gets_s(s, n); puts("entr input dop line"); gets_s(dop, n); int step = 0; // инициализируем шаг 0 while (step == 0) // проверка правильности ввода шага { puts("entr step"); scanf_s("%d", &step); if (step < 1 && step >= strlen(s) - 1) // шаг не может привышать величину входной строки { puts("incorrect step"); step = 0; // зацикливаем ввод } } return step; } void shifr(char *a, char *b, char *dop, int step) // функция шифрования { for (unsigned int i = 0; i < strlen(a); i++) b[i] = a[(i + step) % strlen(a)]; strcat_s(b, 256, dop); } void onshifr(char *a, char *b, char *dop, int step) // функция дешифрования { for (unsigned int i = 0; i < strlen(a) - strlen(dop); i++) b[(i + step) % (strlen(a) - strlen(dop))] = a[i]; } int main() { const int n = 256; // максимальный размер строк char input[n] = { '\0' }, output1[n] = { '\0' }, output2[n] = { '\0' }, dop[n] = { '\0' }; // исходная строка, зашифрованная строка, декодированная строка, строка дополнительных символов int step; // шаг ввхода step = inputs(input, dop, n); shifr(input, output1, dop, step); onshifr(output1, output2, dop, step); puts("input line "); puts(input); puts("shifr line "); puts(output1); puts("unshifr line "); puts(output2); return 0; }
Объяснение кода листинга программы
- Ввод строки, которую необходимо зашифровать, и строки дополнительных символов с помощью функции
gets_s()
. - Ввод шага шифрования с помощью функции
scanf_s()
. - Проверка корректности введенного шага: он не может быть меньше 1 и больше длины входной строки минус 1.
- Если шаг корректен, то его значение присваивается переменной
step
. - Если шаг некорректен, то цикл ввода продолжается.
- Ввод дополнительных символов.
- Вызов функции
shifr()
, которая шифрует входную строку с помощью заданного шага и добавляет дополнительные символы. - Вызов функции
onshifr()
, которая дешифрует зашифрованную строку с помощью того же шага и дополнительных символов. - Вывод исходной строки, зашифрованной строки, дополнительных символов, а также дешифрованной строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д