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

21 Авг 2019 в 07:14
513 +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 Апр 2024 в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир