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

Шифр Полибия (тюремная азбука)

06.10.2016, 16:04. Показов 4784. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нашла на форуме программу преобразования сообщения в шифр Полибия, но программа работает только с латиницей. Что исправить или добавить, чтобы программа воспринимала и кириллицу?
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/////////////////////////////////////////////////////////////////////////////////////////
//Тюремная азбука (или шифр Полибия).
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cctype>
#include <ctime>
#include <complex>
#include <iostream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string         T_str;
typedef std::complex<int>   T_digits;
/////////////////////////////////////////////////////////////////////////////////////////
class  T_polybius_square
{
    static const int    ROWS_COLS = 5;
 
    static const char   BEGIN_SYMB = 'a';
    static const char   BAD_SYMB = 'j';
    static const char   BEEP_SYMB = '\a';
 
    enum  T_pause
    {
        SHORT_BEEP_PAUSE = 300,
        LONG_BEEP_PAUSE = 700,
        AFTER_ROW_BEEP_PAUSE = 1000,
        AFTER_COL_BEEP_PAUSE = 3000
    };
    //-----------------------------------------------------------------------------------
    char  letter_;
    //-----------------------------------------------------------------------------------
public:
    //-----------------------------------------------------------------------------------
    T_polybius_square(char  letter)
        :
        letter_(tolower(letter))
    {}
    //-----------------------------------------------------------------------------------
    void  print()
    {
        std::cout << T_digits(row(), col())
            << std::endl;
 
        sound();
    }
    //-----------------------------------------------------------------------------------
private:
    //-----------------------------------------------------------------------------------
    int  row()
    {
        return  ind() / ROWS_COLS + 1;
    }
    //-----------------------------------------------------------------------------------
    int  col()
    {
        return  ind() % ROWS_COLS + 1;
    }
    //-----------------------------------------------------------------------------------
    int  ind()
    {
        return  (letter_ >= BAD_SYMB ? letter_ - 1 : letter_) - BEGIN_SYMB;
    }
    //-----------------------------------------------------------------------------------
    void  sound()
    {
        row_beep();
        pause(AFTER_ROW_BEEP_PAUSE);
        col_beep();
        pause(AFTER_COL_BEEP_PAUSE);
    }
    //-----------------------------------------------------------------------------------
    void  pause(double  millisec)
    {
        double  start = clock();
        double  span = 0;
        while (span < millisec / 1000)
        {
            span = (clock() - start) / CLOCKS_PER_SEC;
        }
    }
    //-----------------------------------------------------------------------------------
    void  short_beep()
    {
        std::cout << BEEP_SYMB;
        pause(SHORT_BEEP_PAUSE);
    }
    //-----------------------------------------------------------------------------------
    void  long_beep()
    {
        std::cout << BEEP_SYMB;
        pause(LONG_BEEP_PAUSE);
    }
    //-----------------------------------------------------------------------------------
    void  row_beep()
    {
        for (int i = 0; i < row(); ++i)
        {
            long_beep();
        }
    }
    //-----------------------------------------------------------------------------------
    void  col_beep()
    {
        for (int i = 0; i < col(); ++i)
        {
            short_beep();
        }
    }
    //-----------------------------------------------------------------------------------
};
/////////////////////////////////////////////////////////////////////////////////////////
void  polybius_square(const T_str&  s)
{
    for (T_str::const_iterator symb_it = s.begin(); symb_it != s.end(); ++symb_it)
    {
        T_polybius_square(*symb_it).print();
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите строку на латинице:"
        << std::endl;
 
    T_str  s;
    std::cin >> s;
    polybius_square(s);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2016, 16:04
Ответы с готовыми решениями:

Шифр Полибия и Тюремная Азбука
Всем привет! У меня вот такая проблемка...)) Нужно сделать шифр Полибия и в нем же тюремную азбуку...Вот все на что ума хватило..))...

Шифр Полибия
Ребята, есть у кого-нибудь шифр квадрата Полибия на c++ рабочий? Весь интернет прошуршил и не нашел..

Шифр Полибия и Тюремная Азбука
Здраствуйте Кто нибудь помогите написать: тюремная азбука (или шифр Полибия) Delphi выложите файлы прошу Спасибо, могу оплотить...

3
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
06.10.2016, 16:40
Ну попробуй исправить в константах буквы (строки 18-19).
А что такое BAD_SYMB?
0
0 / 0 / 0
Регистрация: 07.12.2014
Сообщений: 32
06.10.2016, 16:44  [ТС]
Пробовала, не помогло... Код не мой, на просторах форума найден... Bad_symb - это что буква j не считается, а кодируется как i
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
06.10.2016, 17:37
Должно работать. Только консоль надо переключить на кодировку 1251 как написано здесь: Русские шрифты в консоли, и исправить программу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    static const char   BEGIN_SYMB = 'а'; // русская 'а'
 
//...
 
    int  ind()
    {
//        return  (letter_ >= BAD_SYMB ? letter_ - 1 : letter_) - BEGIN_SYMB;
        return  letter_ - BEGIN_SYMB;
    }
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
//...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2016, 17:37
Помогаю со студенческими работами здесь

Шифр Полибия. Программа выводит шифр в разной последовательности.
Реализую шифр полибия для русского алфавита. Возникла проблема при выводе шифра. Например при вводе исходного сообщения &quot;ВОВА&quot;...

Шифр Полибия
может кто нибудь и сможет помочь, нужно реализовать шифр Полибия на любом языке, С++ или C#, м?

Шифр Полибия
Пропишите код программы, компоненты на Form выглядят так:

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru