Шифр с использованием решетки кардано - C#
Формулировка задачи:
Код на c++ , если можете перевести в форму на c#, буду благодарен.
int main(int argc, char* argv[])
{
const int SIZE = 5;
char *buf[SIZE] = {"guhoe",
"llxoe",
"bnce.",
"utp!w",
"nqwmp"}; // матрица с зашифрованным текстом
int grid[SIZE][SIZE] ={{0, 0, 1, 0, 1},
{1, 1, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 1, 0},
{0, 0, 0, 0, 0}}; // решетка Кардано
// размер обоих матриц должен быть одинаковым
// вывод зашифрованного сообщения
for (int i = 0; i < SIZE; i++)
cout << buf[i] << endl;
cout << endl;
// прямой обход решетки
cout << "0:" << endl;
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
if (grid[i][j] == 1)
cout << buf[i][j];
cout << endl;
// поворот решетки на 90 градусов по часовой стрелке
cout << "90:" << endl;
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
if (grid[SIZE-j-1][i] == 1)
cout << buf[i][j];
cout << endl;
// поворот решетки на 180 градусов по часовой стрелке
cout << "180:" << endl;
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
if (grid[SIZE-i-1][SIZE-j-1] == 1)
cout << buf[i][j];
cout << endl;
// поворот решетки на 270 градусов по часовой стрелке
cout << "270:" << endl;
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
if (grid[j][SIZE-i-1] == 1)
cout << buf[i][j];
cout << endl;
system("pause");
return 0;
}Решение задачи: «Шифр с использованием решетки кардано»
textual
Листинг программы
static void Main(string[] args)
{
const int SIZE = 5;
string[] buf = new string[SIZE] {"guhoe",
"llxoe",
"bnce.",
"utp!w",
"nqwmp"};
int [,] grid=new int[SIZE,SIZE]{{0, 0, 1, 0, 1},
{1, 1, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 1, 0},
{0, 0, 0, 0, 0}};
// вывод зашифрованного сообщения
for (int i = 0; i < SIZE; i++)
{
Console.WriteLine(buf[i]);
}
Console.WriteLine("");
// прямой обход решетки
Console.WriteLine("0:");
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
if (grid[i,j] == 1)
{
Console.Write(buf[i][j]);
}
Console.WriteLine("");
// поворот решетки на 90 градусов по часовой стрелке
Console.WriteLine("90:");
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
if (grid[SIZE - j - 1, i] == 1)
{
Console.Write(buf[i][j]);
}
Console.WriteLine("");
// поворот решетки на 180 градусов по часовой стрелке
Console.WriteLine("180:");
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
if (grid[SIZE - i - 1, SIZE - j - 1] == 1)
{
Console.Write(buf[i][j]);
}
Console.WriteLine("");
// поворот решетки на 270 градусов по часовой стрелке
Console.WriteLine("270:");
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
if (grid[j, SIZE - i - 1] == 1)
{
Console.Write(buf[i][j]);
}
Console.WriteLine("");
}