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

Расшифровка/зашифровка Решётка Кардано - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В чем разница. http://www.cyberforum.ru/cpp-beginners/thread66510.html
Извиняюсь за тупой вопрос, но в чем разница. оператора ++ к примеру. a=b++ и a=++b ?
C++ перестановка строк в матрице С++ Дана целочисленная матрица размера 6х9. Найти матрицу, получающуюся из данной: перестановкой строк первой с последней, второй с предпоследней и т.д. http://www.cyberforum.ru/cpp-beginners/thread66505.html
Сортировка векторов со строковыми переменными C++
День добрый. У меня возник вопрос, возможно ли сделать сортировку строковых переменных в массиве не в алфавитном порядке, а в заданном ранее? Да, и ещё, какие самые эффективные структуры данных для хранения хранения векторов. Я начал делать с массивами, но не поспешил ли я?
Отображение данных C++
Привет всем! Каким образом можно вывести таблицу, чтобы последовательный вывод информации выполнялся в определенной части строки? Как в этом случае сдвинуть курсор на n-ое количество символов? Наглядный пример: _____________________________________________________________ |№№|Name |Tag 1 |Tag 2 | |__|__________________________________________|______|______| |0...
C++ Не могу понять почему не работает (или правильно не работает) http://www.cyberforum.ru/cpp-beginners/thread66441.html
#include <iostream.h> #include <conio.h> #define N 5 #define M 3 void main() { int a; int i,j; cout<<"nachalnya matricha:"<<endl;
C++ конструктор копии и операторы list::list(list const& l) { l.H(); if (l.head==NULL) {head=present=NULL; return;} head=present=new element(l.head); while(l.present->next) { l.Next(); present->next = new element(l.present->number); Next(); подробнее

Показать сообщение отдельно
vitalino
0 / 0 / 1
Регистрация: 23.11.2009
Сообщений: 18
23.11.2009, 14:59     Расшифровка/зашифровка Решётка Кардано
Здравствуйте уважаемые гуру форума.
Столкнулся с задачей написать программу которая шифрует/расшифровывает текст закодированный решёткой Кардано.
Вот ссылка на сам алгоритм
http://school-555.narod.ru/kript/3.htm
Я решил поворачивать на 180 гр. Так как на я просто не додумался как сделать .
Вот что получилось у меня на данный момент :
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
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <iostream.h>
 
 
int main(int argc, char* argv[])
{
int i1=0,j1=0,i=0,j=0,m=0,p=8,n=4;
int z=0;
char fraza[16];
char slovo[4][4]={
{'0','1','0','0'},
{'1','0','0','0'},
{'0','1','0','0'},
{'0','0','0','1'}
};
cout<<"Kluch : ";
cout<<"\n";
for(i1=0;i1<4;i1++)
{
cout<<"\n";
for(j1=0;j1<4;j1++)
{
cout<<slovo[i1][j1];
cout<<" ";
}
}
cout<<"\n";
cout<<"Enter text max 16 - ";
cin>>fraza;
cout<<"\n";
cout<<"Enter complete";
cout<<"\n";
 for(i1=0;i1<4;i1++)
 {
  for(j1=0;j1<4;j1++)
        {
         if (slovo[i1][j1]=='1')
        {
           slovo[i1][j1]=fraza[m];
           m++;
        }
        else
        {}
        }
  }
  cout<<"\n";
cout<<"vivod soderzgimogo : ";
cout<<"\n";
for(i1=0;i1<4;i1++)
{
cout<<"\n";
for(j1=0;j1<4;j1++)
{
cout<<slovo[i1][j1];
cout<<" ";
}
}
cout<<"\n";
m=4;
 
 
 
 
      for (i=0;i<4;i++)
        {
        z=0;
  for (j=0;j<4;j++)
  {
        if (slovo[i][j]!='0'&&z!=1)
        {
        n=4;
        z++;
           switch(j)
{
case 0:slovo[i][n-1]=fraza[m];m++;cout<<"z0";
 break;
case 1:slovo[i][n/2]=fraza[m]; m++; cout<<"z1";
 break;
case 2:slovo[i][n/2-1]=fraza[m]; m++;cout<<"z2";
 break;
case 3:slovo[i][0]=fraza[m]; m++; cout<<"z3";
 break;
}
         }
        else{cout<<"else";}
  }
        }
 
 
 
cout<<"\n\n";
 
 
 
  cout<<"\n";
cout<<"vivod soderzgimogo : ";
cout<<"\n";
for(i1=0;i1<4;i1++)
{
cout<<"\n";
for(j1=0;j1<4;j1++)
{
cout<<slovo[i1][j1];
cout<<" ";
}
}
cout<<"\n";
m=4;
   for (i=0;i<4;i++)
        {
        z=0;
  for (j=0;j<4;j++)
  {
        if (slovo[i][j]==fraza[m]&&z!=1)
        {
        n=4;
        z++;
           switch(i)
{
case 0:slovo[n-1][j]=fraza[p];p++;m++;cout<<"z0";
 break;
case 1:slovo[n/2][j]=fraza[p]; p++;m++; cout<<"z1";
 break;
case 2:slovo[n/2-1][j]=fraza[p]; p++;m++;cout<<"z2";
 break;
case 3:slovo[0][j]=fraza[p]; p++;m++; cout<<"z3";
 break;
}
         }
        else{cout<<"else";}
  }
        }
 
   cout<<"\n";
cout<<"vivod soderzgimogo : ";
cout<<"\n";
for(i1=0;i1<4;i1++)
{
cout<<"\n";
for(j1=0;j1<4;j1++)
{
cout<<slovo[i1][j1];
cout<<" ";
}
}
cout<<"\n";
char response;
cin>>response;
return 0;
}
//---------------------------------------------------------------------------
здесь много лишнего промежуточный вывод содержимого массива и прочее.
У меня получилость записать первые 4 буквы в квадрат, отразить на 180 и записать ещё 4
это вот этот кусок
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
cout<<"Enter text max 16 - ";
cin>>fraza;
cout<<"\n";
cout<<"Enter complete";
cout<<"\n";
 for(i1=0;i1<4;i1++)
 {
  for(j1=0;j1<4;j1++)
        {
         if (slovo[i1][j1]=='1')
        {
           slovo[i1][j1]=fraza[m];
           m++;
        }
        else
        {}
        }
  }
  cout<<"\n";
cout<<"vivod soderzgimogo : ";
cout<<"\n";
for(i1=0;i1<4;i1++)
{
cout<<"\n";
for(j1=0;j1<4;j1++)
{
cout<<slovo[i1][j1];
cout<<" ";
}
}
cout<<"\n";
m=4;
 
 
 
 
      for (i=0;i<4;i++)
        {
        z=0;
  for (j=0;j<4;j++)
  {
        if (slovo[i][j]!='0'&&z!=1)
        {
        n=4;
        z++;
           switch(j)
{
case 0:slovo[i][n-1]=fraza[m];m++;cout<<"z0";
 break;
case 1:slovo[i][n/2]=fraza[m]; m++; cout<<"z1";
 break;
case 2:slovo[i][n/2-1]=fraza[m]; m++;cout<<"z2";
 break;
case 3:slovo[i][0]=fraza[m]; m++; cout<<"z3";
 break;
}
         }
        else{cout<<"else";}
  }
        }
но дальше начались проблемы .
Алгоритм громоздкий и не совершенный. Поэтому дальше писать нет смысла .
Может быть кто сталкивался с подобной задачей, можете подсказать способы решения.
Или возможно кто то может подсказать как "поварачивать" двумерный массив на 90 градусов поочерёдно записывая в него данные.
Вообщем пишите любые советы. надеюсь на помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru