Как реализовать дешифровку шифр частоколу? Проблема в том, что нужно написать программу, которая будет получать на вход шифр, и выводить дешифрованный результат. Но проблема в том, что высота шифра может быть любая и выводиться должно лишь одно слово, которое существует, а не просто набор букв. Может, кто-то имеет какие-то идеи касательно этого, буду рад любой помощи. Программа консольная и пишется на С.

21 Авг 2019 в 07:14
488 +1
0
Ответы
1

Для дешифровки шифра Частоколу можно воспользоваться следующим подходом:

Запросите у пользователя шифр, который необходимо дешифровать.Определите высоту шифра путем подсчета количества строк.Создайте двумерный массив (матрицу) размером высота шифра на 26 (количество букв в английском алфавите), где каждый элемент будет хранить букву на соответствующей позиции.Заполните матрицу символами из шифра, пропуская пробелы и символы переноса строки.Проитерируйтесь по матрице снизу вверх и слева направо, считывая символы по диагонали. Это и будет ваш дешифрованный результат.Выведите полученное слово.

Пример кода на языке программирования C:

#include <stdio.h>
int main() {
char cipher[100][100]; // Максимальный размер шифра
int height = 0;
// Ввод шифра
printf("Введите шифр:\n");
while (fgets(cipher[height], sizeof(cipher[height]), stdin)) {
height++;
}
// Дешифровка
int max_height = height;
int width = 26;
char decrypted[100]; // Максимальный размер дешифрованного слова
int index = 0;
for (int sum = 0; sum < (height + width - 1); sum++) {
for (int i = 0; i < height; i++) {
int j = sum - i;
if (j >= 0 && j < width) {
if (cipher[i][j] != ' ' && cipher[i][j] != '\n') {
decrypted[index] = cipher[i][j];
index++;
}
}
}
}
decrypted[index] = '\0'; // Добавление завершающего нулевого символа
// Вывод дешифрованного слова
printf("Дешифрованное слово: %s\n", decrypted);
return 0;
}

Этот код считывает шифр с клавиатуры, строит матрицу символов по диагонали и выводит дешифрованное слово. Надеюсь, это поможет вам решить вашу задачу.

20 Апр в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 94 888 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир