Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Мусаси
7 / 7 / 0
Регистрация: 07.05.2013
Сообщений: 177
#1

Шифрование биграмм с двойным квадратом (C++) - C++

14.02.2014, 02:43. Просмотров 1521. Ответов 4
Метки нет (Все метки)

Всем добрый вечер! В общем надо зашифровать слово методом Биграмм с двойным квадратом. Суть их в чем заключается:
1)есть 2 таблицы (массивы из букв. Буквы не должны повторяться)
2)задаём ключ для первой и второй таблицы. (ключ - слово, заполняющее самую первую строчку массива)
3)вводим шифруемое слово(открытый текст)
4)шифр осуществляется так Шифрование биграмм с двойным квадратом (C++)

Вот я написал код программы, который я не могу доработать, т.к. выдаёт ошибку
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// Шифрование биграммами с двойным квадратом.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <string.h>
 
using namespace std;
 
int main()
{//инициализация 1-го массива и вывод его на экран
const int A=6,B=6;
char Mass[A][B]={"ABCDE","FGHIJ","KLMNO","PQRST","UVWXY","Z,-.!"};
int i,j;
cout<<"--- 1 Massiv ---"<<endl;
for (i=0;i<A;i++) {cout<<endl;
for (j=0;j<B;j++) {cout<<Mass[i][j]<<" ";}
}
 
//инициализация 2-го массива и вывод его на экран
const int A1=6,B1=6;
char Mass1[A1][B1]={"ABCDE","FGHIJ","KLMNO","PQRST","UVWXY","Z,-.!"};
int i1,j1;
cout<<endl<<endl<<"--- 2 Massiv ---"<<endl;
for (i1=0;i1<A1;i1++) {cout<<endl;
for (j1=0;j1<B1;j1++) {cout<<Mass1[i1][j1]<<" ";}
}
 
//вводим ключ для первого массива и вывод исходного массива
cout<<endl<<"Input key for 1-st Massiv (5 symbols) ---> ";
char key1[A];//КЛЮЧ
cin>>key1;
 
char g1=Mass[0][0];//ДЛЯ 1-Й БУКВЫ
char g2=Mass[0][1];//ДЛЯ 2-Й БУКВЫ
char g3=Mass[0][2];//ДЛЯ 3-Й БУКВЫ
char g4=Mass[0][3];//ДЛЯ 4-Й БУКВЫ
char g5=Mass[0][4];//ДЛЯ 5-Й БУКВЫ
 
for (i=0;i<A;i++) {cout<<endl;
for (j=0;j<B;j++) {
                if (Mass[i][j]==key1[0]) {key1[0]=Mass[0][0]; Mass[0][0]=Mass[i][j];Mass[i][j]=g1;}
                if (Mass[i][j]==key1[1]) {key1[1]=Mass[0][1]; Mass[0][1]=Mass[i][j];Mass[i][j]=g2;}//
                if (Mass[i][j]==key1[2]) {key1[2]=Mass[0][2]; Mass[0][2]=Mass[i][j];Mass[i][j]=g3;}
                if (Mass[i][j]==key1[3]) {key1[3]=Mass[0][3]; Mass[0][3]=Mass[i][j];Mass[i][j]=g4;}//
                if (Mass[i][j]==key1[4]) {key1[4]=Mass[0][4]; Mass[0][4]=Mass[i][j];Mass[i][j]=g5;}
                    }
}
 
cout<<"--- 1 Massiv (NEW) ---"<<endl;
for (i=0;i<A;i++) {cout<<endl;
for (j=0;j<B;j++) {cout<<Mass[i][j]<<" ";}
}
 
//вводим ключ для второго массива и вывод исходного массива
cout<<endl<<"Input key for 2-d Massiv (5 symbols) ---> ";
char key2[A1];//КЛЮЧ
cin>>key2;
 
char G1=Mass1[0][0];//ДЛЯ 1-Й БУКВЫ
char G2=Mass1[0][1];//ДЛЯ 2-Й БУКВЫ
char G3=Mass1[0][2];//ДЛЯ 3-Й БУКВЫ
char G4=Mass1[0][3];//ДЛЯ 4-Й БУКВЫ
char G5=Mass1[0][4];//ДЛЯ 5-Й БУКВЫ
 
for (i1=0;i1<A1;i1++) {cout<<endl;
for (j1=0;j1<B1;j1++) {
                if (Mass1[i1][j1]==key2[0]) {key2[0]=Mass1[0][0]; Mass1[0][0]=Mass1[i1][j1];Mass1[i1][j1]=G1;}
                if (Mass1[i1][j1]==key2[1]) {key2[1]=Mass1[0][1]; Mass1[0][1]=Mass1[i1][j1];Mass1[i1][j1]=G2;}//
                if (Mass1[i1][j1]==key2[2]) {key2[2]=Mass1[0][2]; Mass1[0][2]=Mass1[i1][j1];Mass1[i1][j1]=G3;}
                if (Mass1[i1][j1]==key2[3]) {key2[3]=Mass1[0][3]; Mass1[0][3]=Mass1[i1][j1];Mass1[i1][j1]=G4;}//
                if (Mass1[i1][j1]==key2[4]) {key2[4]=Mass1[0][4]; Mass1[0][4]=Mass1[i1][j1];Mass1[i1][j1]=G5;}
                    }
}
 
cout<<"--- 2 Massiv (NEW) ---"<<endl;
for (i1=0;i1<A1;i1++) {cout<<endl;
for (j1=0;j1<B1;j1++) {cout<<Mass1[i1][j1]<<" ";}
}
 
//ВВОДИМ И ШИФРУЕМ СЛОВО
cout<<endl<<"Input word(limit 10)"<<endl;
char word[6];
cin>>word[6];
//-------поиск в 1-ом и во 2-ом ------------------------
int x,y,X,Y;//1-2
int x1,y1,X1,Y1;//3-4
int x2,y2,X2,Y2;//5-6
int x3,y3,X3,Y3;//7-8
int x4,y4,X4,Y4;//9-10
 
char w0=word[0]; 
char w1=word[1];
 
for (i=0;i<A;i++) {//1-й (1-я буква) [1-й массив 1-я буква]
for (j=0;j<B;j++)   
    {   if (Mass[i][j]==w0) {x=i;y=j;}
    }
}
for (i1=0;i1<A1;i1++) {//2-й (2-я буква)
for (j1=0;j1<B1;j1++)   
    {   if (Mass1[i1][j1]==w1) {X=i1;Y=j1;}
    }
}
cout<<"Number 1 ---- ["<<x<<" "<<y<<"]"<<endl;
cout<<"Number 2 ---- ["<<X<<" "<<Y<<"]"<<endl;
 
/*for (i=0;i<A;i++) {//1-й (3-я буква)
for (j=0;j<B;j++)   
    {   if (Mass[i][j]==word[3]) {x1=i;y1=j;}
    }
}
for (i1=0;i1<A1;i1++) {//2-й (4-я буква)
for (j1=0;j1<B1;j1++)   
    {   if (Mass1[i1][j1]==word[4]) {X1=i1;Y1=j1;}
    }
}
 
 
for (i=0;i<A;i++) {//1-й (5-я буква)
for (j=0;j<B;j++)   
    {   if (Mass[i][j]==word[5]) {x2=i;y2=j;}
    }
}
for (i1=0;i1<A1;i1++) {//2-й (6-я буква)
for (j1=0;j1<B1;j1++)   
    {   if (Mass1[i1][j1]==word[6]) {X2=i1;Y2=j1;}
    }
}
 
for (i=0;i<A;i++) {//1-й (7-я буква)
for (j=0;j<B;j++)   
    {   if (Mass[i][j]==word[7]) {x3=i;y3=j;}
    }
}
for (i1=0;i1<A1;i1++) {//2-й (8-я буква)
for (j1=0;j1<B1;j1++)   
    {   if (Mass1[i1][j1]==word[8]) {X3=i1;Y3=j1;}
    }
}
 
for (i=0;i<A;i++) {//1-й (9-я буква)
for (j=0;j<B;j++)   
    {   if (Mass[i][j]==word[9]) {x4=i;y4=j;}
    }
}
for (i1=0;i1<A1;i1++) {//2-й (10-я буква)
for (j1=0;j1<B1;j1++)   
    {   if (Mass1[i1][j1]==word[10]) {X4=i1;Y4=j1;}
    }
}*/
cout<<endl<<"Vash shifrovanoe slovo - "<<endl;
cout<<Mass1[x][Y]<<" | "<<Mass[X][y]<<endl;
 
system("pause");
return 0;
}
Вот выдаёт ошибку:
Шифрование биграмм с двойным квадратом (C++)
Подскажите, в чем причина, что не так? Можно ли как-то уменьшить код. На всякий скину программу Шифрование биграммами с двойным квадратом.rar
Спасибо. Буду очень благодарен. Надеюсь, эта тема еще кому-нибудь поможет
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2014, 02:43     Шифрование биграмм с двойным квадратом (C++)
Посмотрите здесь:

Шифрование квадратом Полибия - C++
Шифрование квадратом Полибия. Допустим, шифрую слово СЕЛДОН. Должно получиться зашифрованное сообщение 35 16 25 15 32 31, но выдает 15 16...

Подсчитать частоту биграмм в бинарном файле - C++
Помогите, нужно создать программу, которая будет подсчитывать частоту биграмм в бинарном файле.

Посчитать процентное соотношение (или количество) каждой буквы алфавита и биграмм - C++
Дан текст 5Мб. надо написать программу на с++, посчитать процентное соотношение(или количество) каждой буквы алфавита и биграмм. Подскажите...

Сортировка с двойным включением - C++
Помогите написать код для сортировки с двойным включением по возрастанию на C++?

Закрытое хеширование с двойным опробованием - C++
Помогите, пожалуйста! Очень нужна ХЕШ-функция с двойным хешированием. В интернете информации очень мало, ни одного примера. Реализация на...

Восстановление из трея двойным нажатием - C++ Builder
Здраствуйте, подскажите где выставить восстановление из трея двойным нажатием левой кнопкой мыши по иконке, если правую нажимаю то там я...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Мусаси
7 / 7 / 0
Регистрация: 07.05.2013
Сообщений: 177
15.02.2014, 11:30  [ТС]     Шифрование биграмм с двойным квадратом (C++) #2
Помогите пожалуйста просто поменять местами буквы в массиве
StailGot
28 / 23 / 6
Регистрация: 25.08.2013
Сообщений: 41
15.02.2014, 18:44     Шифрование биграмм с двойным квадратом (C++) #3
Цитата Сообщение от Мусаси Посмотреть сообщение
Подскажите, в чем причина, что не так?
//ВВОДИМ И ШИФРУЕМ СЛОВО
cout<<endl<<"Input word(limit 10)"<<endl;
char word[6];
cin>>word[6]
;
C++
1
cin>>word;
Мусаси
7 / 7 / 0
Регистрация: 07.05.2013
Сообщений: 177
15.02.2014, 19:42  [ТС]     Шифрование биграмм с двойным квадратом (C++) #4
Спасибо. Исправил - заработало!!!

Интересно, можно ли сократить программный код?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2014, 16:57     Шифрование биграмм с двойным квадратом (C++)
Еще ссылки по теме:

Работа с двойным указателем в структуре - Visual C++
Есть такой код: typedef struct tagSTRUCT { ... TCHAR **ppszArray; int nArrayCount; ... } STRUCT; STRUCT st =...

Не открываются проекты двойным щелчком - Visual C++
Добрый день. При попытке открыть любой проект из проводника двойным кликом вылезает ошибка: (вложение) надеялся что в 2012 студии...

Как сформировать массив строк, разделенных нулями, с двойным нулем на конце - C++
Здравствуйте. Как сформировать массив строк, разделенных нулями, с двойным нулем на конце (null-terminated string array)? что это за...

Является ли магическим квадратом? - C++
Здравствуйте! Есть задание: Динамически выделить память под N2 элементов целого типа int. Разработать алгоритм и программу для...

квадратная матрица магическим квадратом - C++
Написать программу,которая проверяет,является ли введенная с клавиатуры квадратная матрица магическим квадратом.Магическим квадратом...

Реализация шифрования квадратом Полибия - C++ - C++
Проблема с шифрованием. Допустим, шифрую слово СЕЛДОН. Должно получиться зашифрованное сообщение 35 16 25 15 32 31, но выдает 15 16 25 31...


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

Или воспользуйтесь поиском по форуму:
StailGot
28 / 23 / 6
Регистрация: 25.08.2013
Сообщений: 41
16.02.2014, 16:57     Шифрование биграмм с двойным квадратом (C++) #5
Цитата Сообщение от Мусаси Посмотреть сообщение
Интересно, можно ли сократить программный код?
Можно, например, вынести повторяющиеся действия в отдельные функции (заполнение массива, ввод ключа и т.д.). А после подумать над реализацией алгоритма, очень уж много лишних переменных вида x1,x2, g1, g2 ... от них нужно избавиться.
Yandex
Объявления
16.02.2014, 16:57     Шифрование биграмм с двойным квадратом (C++)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru