Шифрования слова на английском языке путем перемешивания букв - 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;
}

Объяснение кода листинга программы

  1. Ввод строки, которую необходимо зашифровать, и строки дополнительных символов с помощью функции gets_s().
  2. Ввод шага шифрования с помощью функции scanf_s().
  3. Проверка корректности введенного шага: он не может быть меньше 1 и больше длины входной строки минус 1.
  4. Если шаг корректен, то его значение присваивается переменной step.
  5. Если шаг некорректен, то цикл ввода продолжается.
  6. Ввод дополнительных символов.
  7. Вызов функции shifr(), которая шифрует входную строку с помощью заданного шага и добавляет дополнительные символы.
  8. Вызов функции onshifr(), которая дешифрует зашифрованную строку с помощью того же шага и дополнительных символов.
  9. Вывод исходной строки, зашифрованной строки, дополнительных символов, а также дешифрованной строки.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы