Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 17.06.2015
Сообщений: 1

Дешифровка шифра Цезаря методом частотного анализа

18.06.2015, 01:52. Показов 3306. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер всем. Уже несколько дней бъюсь над задачей и все время выводит явно не то что надо.
Я много полазил по КодФоруму и не тольуо и нигде нету реализации этого "простого" как везде говорят алгоритма. Обычная кодировка и дешифровка по этому шифру меня не интересует, как раз это уже бывало и не раз. Это очень расстраивает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
void First()
{
    const int size = 26;
    char ch;
    int mas[size] = {};
    vector<char> vec;
 
    std::ifstream ie("TestDecryption2_input.txt", std::ios::out);
    //in.unsetf(ios::skipws);
 
    if (!ie)
    {
        std::cout << "error open file";
    }
 
    while (ie.get(ch))
    {
 
        //Если буква является прописной
        if (((int)(ch) >= 65) && ((int)(ch) <= 90))
        {
            ++mas[tolower(ch)];
            vec.push_back((char)tolower(ch));
        }
 
        ++mas[(int)ch];
        vec.push_back(ch);
 
 
    }
    ie.close();
 
    //count symbols
    int cnt_char = 0;
    for (int i = 0; i < size; ++i)
        cnt_char += mas[i];
 
    //table
    std::cout << "__ Frequency of characters in the percentage __" << std::endl << std::endl;
    for (int i = 0; i < size; ++i)
    {
        if (mas[i])
            std::cout << (char)(i) << " --> " << (float)(mas[i] * 100) / (float)cnt_char << "%" << std::endl;
    }
 
    int mass[size] = {};
 
    for (int i = 0; i < size; i++)
    {
        mass[i] = mas[i];
    }
    int tmp;
 
    for (int i = 0; i < size - 1; ++i) // i - номер прохода
    {
        for (int j = 0; j < size - 1; ++j) // внутренний цикл прохода
        {
            if (mass[j] < mass[j + 1])
            {
                tmp = mass[j + 1];
                mass[j + 1] = mass[j];
                mass[j] = tmp;
            }
        }
    }
 
    char patternMas[26] = { 'e', 't', 'a', 'o', 'n', 'h', 'i', 's', 'r', 'd', 'l', 'u', 'm', 'f', 'c', 'w', 'g', 'y', 'p', 'b', 'v', 'k', 'j', 'x', 'z', 'q' };
 
    char symb;
 
    /*
    следующая вещь делает вот что - сравнивает каждый элемент массива mass (внешний цикл), который отсортирован по убыванию,
    с каждым элементом масива mas и когда находит совпадение то должна происходить замена всех символов symb
    в строке s символом patternMas[i]. И вот в этом вся проблема. Я так надеюсь. Можешь это исправить?
 
    */
    for (int i = 0, t = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            if (mass[i] == mas[j])
            {
                symb = j;
 
                for (int k = 0; k < vec.size(); k++)
                {
 
                    if (vec[k] == symb)
                        vec[k] = patternMas[t];
                }
 
                t++;
                mas[j] = 0;
                j = 0;
                break;
            }
        }
    }
 
    for (int i = 0; i < vec.size(); i++)
    {
        cout << vec[i];
    }
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.06.2015, 01:52
Ответы с готовыми решениями:

Шифрование подстановкой и раскрытие шифра методом частотного анализа
Выполнитиь частотный анализ открытого текста_1 (не менее 100 тыс. знаков). Выполнить шифрование простой заменой текста_2 (не менее 100 тыс....

Алгоритм для обработки данных частотного анализа
Честно говоря я сомневаюсь, что писать нужно сюда, но к экспертам меня не пускают)) Сам я далеко не эксперт! Очень надеюсь на ваше...

Подбор шифра путем частотного анализа букв текста
Здравствуйте, в общем есть текст который шифруется с помощью цезаря, в полученном тексте надо посчитать общее количество символов сравнить...

1
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
18.06.2015, 02:44
Цитата Сообщение от Sarkel1000 Посмотреть сообщение
очень расстраивает
Угу. Очень расстраивает, что вы не описали проблему. Портить глаза вашим кодом нет желания.

Напишите, внятно, что требуется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.06.2015, 02:44
Помогаю со студенческими работами здесь

Расшифровка шифротекста методом частотного анализа
Помогите! Нужно расшифровать методом частотного анализа криптограмму. Знаю только то, что зашифрованы только буквы (без пробелов, чисел...

Расшифровать текст методом частотного анализа
Зашифровывание сообщений состоят в замене букв исходного текста в соответствии с некоторой (известной только отправителю и получателю)...

Расшифровка шифротекста методом частотного анализа
Доброго времени суток! Имеется такое задание: есть исходный шифротекст, таблица, показывающая частоту встречи того или иного...

Расшифровка текста методом частотного анализа
Здраствуйте помогите расшифровать! с помошью частотного анализа!! Эояё зб эф рныйзб цф Тшошэлуэй-Сйюшжй, ъйьшнэйыышюш куоуэшёмбтй...

Расшифровать текст методом частотного анализа
Здравствуйте,подскажите пожалуйста, есть зашифрованный текст, в этом тексте каждая буква заменена произвольно на другую букву. Облазил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru