Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 1
Регистрация: 04.12.2012
Сообщений: 202
1

Как правильно повернуть решётку для шифрования?

25.11.2014, 20:36. Показов 1303. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь повернуть решетку, буквы берет правильно(и почему то не дает сделать в строку 10 символов, а только 6), но буквы то нужно расставлять по правилу матрицы решетки(grid), в том месте где единицы брать по первому вхождению буквы buf

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace _1lb
{
    class cipher
    {
        static void Main(string[] args)
        {
            string[] buf = new string[6] {"ШИФРРЕШЕТК",
                      "АЯВЛЯЕТСЯЧ",
                      "АСТНЫМСЛУЧ",
                      "АЕМШИФРАМА",
                      "РШРУТНОЙПЕ",
                      "РЕСТАНОВКИ"};
            int[,] grid = new int[6, 10]{
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            {1, 0, 0, 0, 1, 0, 1, 1, 0, 0},
            {0, 1, 0, 0, 0, 1, 0, 0, 0, 1},
            {0, 0, 0, 1, 0, 0, 0, 1, 0, 0},
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 1, 0, 0, 1, 1, 0, 0, 1}
            };
            // вывод зашифрованного сообщения
            for (int i = 0; i < 6; i++)
            {
                Console.WriteLine(buf[i]);
            }
            Console.WriteLine("");
            // поворот 0 градусов
            Console.WriteLine("0:");
            for (int i = 0; i < 6; i++)
                for (int j = 0; j < 6; j++)
                    if (grid[i, j] == 1)
                    {
                        Console.Write(buf[i][j]);
                    }
            Console.WriteLine("");
            // поворот решетки на 180 градусов по часовой стрелке
            Console.WriteLine("180:");
            for (int i = 0; i < 6; i++)
                for (int j = 0; j < 6; j++)
                    if (grid[6 - i - 1, 6 - j - 1] == 1)
                    {
                        Console.Write(buf[i][j]);
                    }
            Console.ReadLine();
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2014, 20:36
Ответы с готовыми решениями:

Как экранировать решётку?
Хочу написать скрипт для редактирования ссылок, но при редактировании ссылки #1111 получаю такую...

Как использовать направление ЭДС и правильные формулы для тока, баланса мощностей и как повернуть прямоугольник на 30' и 130'?
В файле вложена картина предварительного интерфейса и работы программы. Расчет схемы электрических...

Матрицу нужно повернуть на 270, 180 и 90 градусов. Правильно ли написан код?
int n = int.Parse(Console.ReadLine()); int a = new int; int а1 = new int;...

Как правильно дублировать в actionscript 2.0 и как правильно сделать объект для дублирования
Я только начал изучать actionscript и прошу мне помочь. Как правильно дублировать в actionscript...

6
167 / 106 / 30
Регистрация: 19.01.2013
Сообщений: 847
25.11.2014, 21:35 2
Я вот не знаю что вы там хотели. Но я знаю, что вы или не понимаете что вы вообще пишите или или много курили травы.
Ошибки(все критические!. т.е. не обнаруживаются компилятором):
1) Никогда нельзя в циклах, в которых происходит работа с массивом вот так просто указывать максимальное число.
C#
1
 for (int i = 0; i < 6; i++)
Надо пользоваться свойством ленс. или гетленс.
for (int i = 0; i < grid.GetLength(0); i++)
Это нужно, чтобы потом не ломать голову вопросом:" А что это он не весь массив проходит"
2)Нужно расставлять скобки! Без скобок выполняется только одна следующая за if или for и т.д. команда.
Ваш цикл:
C#
1
2
3
4
5
6
 for (int i = 0; i < 6; i++)
                for (int j = 0; j < 6; j++)
                    if (grid[i, j] == 1)
                    {
                        Console.Write(buf[i][j]);
                    }
Мой
C#
1
2
3
4
5
6
7
8
9
10
11
12
 for (int i = 0; i < grid.GetLength(0); i++)
            {
                for (int j = 0; j < grid.GetLength(1); j++)
                {
                    if (grid[i, j] == 1)
                    {
                        Console.Write(buf[i][j]);
                    }
                    else Console.Write("0");
                }
                Console.WriteLine(" ");
            }
Поэтому и не работала
C#
1
  Console.WriteLine(" ");
как надо. Компилятор не Мессинг- читать мысли не умеет.

Общие ошибки:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace _1lb
{
    class cipher
    {
        static void Main(string[] args)
        {
            string[] buf = new string[6] {
                      "ШИФРРЕШЕТК",
                      "АЯВЛЯЕТСЯЧ",
                      "АСТНЫМСЛУЧ",
                      "АЕМШИФРАМА",
                      "РШРУТНОЙПЕ",
                      "РЕСТАНОВКИ"};
            int[,] grid = new int[6, 10]{
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            {1, 0, 0, 0, 1, 0, 1, 1, 0, 0},
            {0, 1, 0, 0, 0, 1, 0, 0, 0, 1},
            {0, 0, 0, 1, 0, 0, 0, 1, 0, 0},
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 1, 0, 0, 1, 1, 0, 0, 1}
            };
            // вывод зашифрованного сообщения
            for (int i = 0; i < 6; i++)
            {
                Console.WriteLine(buf[i]);
            }
            Console.WriteLine("");
            // поворот 0 градусов
            Console.WriteLine("0:");
            for (int i = 0; i < grid.GetLength(0); i++)
            {
                for (int j = 0; j < grid.GetLength(1); j++)
                {
                    if (grid[i, j] == 1)
                    {
                        Console.Write(buf[i][j]);
                    }
                    else Console.Write("0");
                }
                Console.WriteLine(" ");
            }
            // поворот решетки на 180 градусов по часовой стрелке
            Console.WriteLine("180:");
            for (int i = grid.GetLength(0)-1; i > 0; i--)
            {
                for (int j = grid.GetLength(1)-1; j > 0; j--)
                {
                    if (grid[i, j] == 1)
                    {
                        Console.Write(buf[i][j]);
                    }
                    else Console.Write("0");
                } 
                Console.WriteLine(" ");
            }
            Console.ReadLine();
        }
    }
}
Добавлено через 6 минут
Эх, прогледел малёха сам)))
Там во втором цикле надо добавить знак равно!
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace _1lb
{
    class cipher
    {
        static void Main(string[] args)
        {
            string[] buf = new string[6] {
                      "ШИФРРЕШЕТК",
                      "АЯВЛЯЕТСЯЧ",
                      "АСТНЫМСЛУЧ",
                      "АЕМШИФРАМА",
                      "РШРУТНОЙПЕ",
                      "РЕСТАНОВКИ"};
            int[,] grid = new int[6, 10]{
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            {1, 0, 0, 0, 1, 0, 1, 1, 0, 0},
            {0, 1, 0, 0, 0, 1, 0, 0, 0, 1},
            {0, 0, 0, 1, 0, 0, 0, 1, 0, 0},
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 1, 0, 0, 1, 1, 0, 0, 1}
            };
            // вывод зашифрованного сообщения
            for (int i = 0; i < 6; i++)
            {
                Console.WriteLine(buf[i]);
            }
            Console.WriteLine("");
            // поворот 0 градусов
            Console.WriteLine("0:");
            for (int i = 0; i < grid.GetLength(0); i++)
            {
                for (int j = 0; j < grid.GetLength(1); j++)
                {
                    if (grid[i, j] == 1)
                    {
                        Console.Write(buf[i][j]);
                    }
                    else Console.Write("0");
                }
                Console.WriteLine(" ");
            }
            // поворот решетки на 180 градусов по часовой стрелке
            Console.WriteLine("180:");
            for (int i = grid.GetLength(0)-1; i >= 0; i--)
            {
                for (int j = grid.GetLength(1)-1; j >= 0; j--)
                {
                    if (grid[i, j] == 1)
                    {
                        Console.Write(buf[i][j]);
                    }
                    else Console.Write("0");
                } 
                Console.WriteLine(" ");
            }
            Console.ReadLine();
        }
    }
}
1
2 / 2 / 1
Регистрация: 04.12.2012
Сообщений: 202
26.11.2014, 12:50  [ТС] 3
только должно получаться так
0:
0Ш00000000
И000Ф0РР00
0Е000Ш000Е
000Т000К00
0А00000000
00Я00ВЛ00Я

180:
ЕШ00000000
И000Ф0РРЧ0
0ЕА00ШС00Е
Т00ТН00КЫ0
0АМС0Л000У
00Я00ВЛ0ЧЯ

Добавлено через 12 часов 13 минут
Уже более менее, но на повороте на 180 сел в лужу опять, он не имеет ввиду почему то поворот на 0
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace laba5
{
    class grille
    {
        static void Main(string[] args)
        {
            string[] word = new string[6] {
                      "ШИФРРЕШЕТК",
                      "АЯВЛЯЕТСЯЧ",
                      "АСТНЫМСЛУЧ",
                      "АЕМШИФРАМА",
                      "РШРУТНОЙПЕ",
                      "РЕСТАНОВКИ"};
            string word2 = "ШИФРРЕШЕТКАЯВЛЯЕТСЯЧАСТНЫМСЛУЧАЕМШИФРАМАРШРУТНОЙПЕРЕСТАНОВКИ";
            int[,] grill = new int[6, 10]{
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            {1, 0, 0, 0, 1, 0, 1, 1, 0, 0},
            {0, 1, 0, 0, 0, 1, 0, 0, 0, 1},
            {0, 0, 0, 1, 0, 0, 0, 1, 0, 0},
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 1, 0, 0, 1, 1, 0, 0, 1}
            };
            
            for (int i = 0; i < 6; i++)
            {
                Console.WriteLine(word[i]);
            }
            Console.WriteLine("");
            
            Console.WriteLine("0:");
            int index = 0;
            for (int i = 0; i < grill.GetLength(0); i++)
            {
                for (int j = 0; j < grill.GetLength(1); j++)
                {
                    if (grill[i, j] == 1)
                    {
                        Console.Write(word2[index]);
                        index++;
                    }
                    else Console.Write("0");
                }
                Console.WriteLine(" ");
            }
            Console.WriteLine(" ");
            Console.WriteLine("180:");
            for (int i = grill.GetLength(0) - 1; i >= 0; i--)
            {
                for (int j = grill.GetLength(1) - 1; j >= 0; j--)
                {
                    if (grill[i, j] == 1)
                    {
                        Console.Write(word2[index]);
                        index++;
                    }
                    else Console.Write("0");
                }
                Console.WriteLine(" ");
            }
            Console.ReadLine();
        }
    }
}
0
tezaurismosis
28.11.2014, 21:14
  #4
 Комментарий модератора 
temasey, создавать несколько тем по одному вопросу
запрещено правилами. Все мелкие вопросы по вашему данному коду
обсуждайте в этой теме.
0
167 / 106 / 30
Регистрация: 19.01.2013
Сообщений: 847
29.11.2014, 00:19 5
Лучший ответ Сообщение было отмечено temasey как решение

Решение

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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace _1lb
{
    class cipher
    {
        static void Main(string[] args)
        {
            // Вот это вот. Вообще вызывает сомнения. Надо было хранить или в массиве Char или в List. Лучше в Char.
            // Тогда бы можно было бы проще работать.
            // Смотри [url]http://msdn.microsoft.com/ru-ru/library/b873y76a(v=vs.110).aspx[/url]
            // Пригодится. К сожалению почему- то не удалось обратиться к buf. Она доступна только для чтения, а разбивать строку 
            //указанным методом, затем опять собирать- не вариант! 
            string[] buf = new string[6] {
                      "ШИФРРЕШЕТК",
                      "АЯВЛЯЕТСЯЧ",
                      "АСТНЫМСЛУЧ",
                      "АЕМШИФРАМА",
                      "РШРУТНОЙПЕ",
                      "РЕСТАНОВКИ"};
            string word2 = "ШИФРРЕШЕТКАЯВЛЯЕТСЯЧАСТНЫМСЛУЧАЕМШИФРАМАРШРУТНОЙПЕРЕСТАНОВКИ";
            char[,] buf_1 = new char[6, 10];
            int index_1 = 0;
            int[,] grid = new int[6, 10]{
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 0, 0, 0, 1, 0, 1, 1, 0, 0},
{0, 1, 0, 0, 0, 1, 0, 0, 0, 1},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 1, 0, 0, 1, 1, 0, 0, 1}
};
            List<char> BufToPrint = new List<char>();
 
            // вывод зашифрованного сообщения
            for (int i = 0; i < 6; i++)
            {
                Console.WriteLine(buf[i]);
            }
            Console.WriteLine("");
 
            Console.WriteLine("0:");
            char l;
            int index = 0;
            for (int i = 0; i < grid.GetLength(0); i++)
            {
                for (int j = 0; j < grid.GetLength(1); j++)
                {
 
 
                    if (grid[i, j] == 1)
                    {
                        
                        BufToPrint.Add(word2[index_1]);
                        l = BufToPrint[index];
                        Console.Write(l);
                        index_1++;
                    }
                    else
                    {
                        Console.Write("0");                        
                        BufToPrint.Add((char)0);
                        l = BufToPrint[index];                        
 
 
                    }
                    index++;
 
                }
                Console.WriteLine(" ");
            }
 
 
            // Цикл переворачивания и сохр в памяти
            index = 0;
            char p = word2[index_1-1];
            for (int i = grid.GetLength(0)-1; i >= 0 ; i--)
            {
                for (int j = grid.GetLength(1)-1; j >=0 ; j--)
                {
                    int v = BufToPrint[index];
                    if (BufToPrint[index] == 0)
                    {
 
 
                        if (grid[i, j] == 1)
                        {
                            int h = buf.Length - i;
                            int k = 10 - j;
                            char f = word2[index_1];
                            BufToPrint[index] = word2[index_1]; //buf[buf.Length - i - 1][10 - j - 1];
                            l = BufToPrint[index];
                            index_1++;
 
                        }
                        else
                        {
                            //(char) -  это НЕ явное преобразование из string в char. 
                            // Допустимо только для настедующих типов. Например, int можно перевести в double. ( не помню примеры).
                            // Вот другой пример.В нём y равен 8, а дробная часть отрезается. Вообще такое Не явное преобразование не всегда допустимо!
                            // Например тут Не применяется округление, что может повлиять на расчёты!                        
                            //Удалить! Является прмером!
                            double g = 8.8;
                            int y = (int)g;
                            // Тут применяется округление!
                            int r = (int)Math.Round(g);
 
                        } index++;
                    }
                    else { index++; }
 
                }
                Console.WriteLine(" ");
            }
            // Цикл переворачивания и сохр в памяти
            index = 0;
            for (int i = grid.GetLength(0) - 1; i >= 0; i--)
            {
                for (int j = 0; j < grid.GetLength(1); j++)
                {
                    int v = BufToPrint[index];
                    if (BufToPrint[index] == 0)
                    {
 
 
                        if (grid[i, j] == 1)
                        {
                            int h = buf.Length - i;
                            int k = 10 - j;
                            char f = word2[index_1];
                            BufToPrint[index] = word2[index_1]; //buf[buf.Length - i - 1][10 - j - 1];
                            l = BufToPrint[index];
                            index_1++;
 
                        }
                        else
                        {
                            //(char) -  это НЕ явное преобразование из string в char. 
                            // Допустимо только для настедующих типов. Например, int можно перевести в double. ( не помню примеры).
                            // Вот другой пример.В нём y равен 8, а дробная часть отрезается. Вообще такое Не явное преобразование не всегда допустимо!
                            // Например тут Не применяется округление, что может повлиять на расчёты!                        
                            //Удалить! Является прмером!
                            double g = 8.8;
                            int y = (int)g;
                            // Тут применяется округление!
                            int r = (int)Math.Round(g);
 
                        } index++;
                    }
                    else { index++; }
 
                }
                Console.WriteLine(" ");
            }
 
            // Цикл переворачивания и сохр в памяти
            index = 0;
            for (int i = 0; i < grid.GetLength(0); i++)
            {
                for (int j = grid.GetLength(1) - 1; j >= 0; j--)
                {
                    int v = BufToPrint[index];
                    if (BufToPrint[index] == 0)
                    {
 
 
                        if (grid[i, j] == 1)
                        {
                            if (index == 20)
                            { }
                            int h = buf.Length - i;
                            int k = 10 - j;
                            char f = word2[index_1];
                            BufToPrint[index] = word2[index_1]; //buf[buf.Length - i - 1][10 - j - 1];
                            l = BufToPrint[index];
                            index_1++;
 
                        }
                        else
                        {
   
 
                        } index++;
                    }
                    else { index++; }
 
                }
                Console.WriteLine(" ");
            }
0
167 / 106 / 30
Регистрация: 19.01.2013
Сообщений: 847
29.11.2014, 08:59 6
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace _1lb
{
    class cipher
    {
        static void Main(string[] args)
        {
            // Вот это вот. Вообще вызывает сомнения. Надо было хранить или в массиве Char или в List. Лучше в Char.
            // Тогда бы можно было бы проще работать.
            // Смотри [url]http://msdn.microsoft.com/ru-ru/library/b873y76a(v=vs.110).aspx[/url]
            // Пригодится. К сожалению почему- то не удалось обратиться к buf. Она доступна только для чтения, а разбивать строку 
            //указанным методом, затем опять собирать- не вариант! 
            string[] buf = new string[6] {
                      "ШИФРРЕШЕТК",
                      "АЯВЛЯЕТСЯЧ",
                      "АСТНЫМСЛУЧ",
                      "АЕМШИФРАМА",
                      "РШРУТНОЙПЕ",
                      "РЕСТАНОВКИ"};
            string word2 = "ШИФРРЕШЕТКАЯВЛЯЕТСЯЧАСТНЫМСЛУЧАЕМШИФРАМАРШРУТНОЙПЕРЕСТАНОВКИ";
            char[,] buf_1 = new char[6, 10];
            int index_1 = 0;
            int[,] grid = new int[6, 10]{
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 0, 0, 0, 1, 0, 1, 1, 0, 0},
{0, 1, 0, 0, 0, 1, 0, 0, 0, 1},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 1, 0, 0, 1, 1, 0, 0, 1}
};
            List<char> BufToPrint = new List<char>();
 
            // вывод зашифрованного сообщения
            for (int i = 0; i < 6; i++)
            {
                Console.WriteLine(buf[i]);
            }
            Console.WriteLine("");
 
            Console.WriteLine("0:");
            char l;
            int index = 0;
            for (int i = 0; i < grid.GetLength(0); i++)
            {
                for (int j = 0; j < grid.GetLength(1); j++)
                {
 
 
                    if (grid[i, j] == 1)
                    {
                        
                        BufToPrint.Add(word2[index_1]);
                        l = BufToPrint[index];
                        Console.Write(l);
                        index_1++;
                    }
                    else
                    {
                        Console.Write("0");                        
                        BufToPrint.Add((char)0);
                        l = BufToPrint[index];                        
 
 
                    }
                    index++;
 
                }
                Console.WriteLine(" ");
            }
 
 
            // Цикл переворачивания и сохр в памяти
            index = 0;
            char p = word2[index_1-1];
            for (int i = grid.GetLength(0)-1; i >= 0 ; i--)
            {
                for (int j = grid.GetLength(1)-1; j >=0 ; j--)
                {
                    int v = BufToPrint[index];
                    if (BufToPrint[index] == 0)
                    {
 
 
                        if (grid[i, j] == 1)
                        {
                            int h = buf.Length - i;
                            int k = 10 - j;
                            char f = word2[index_1];
                            BufToPrint[index] = word2[index_1]; //buf[buf.Length - i - 1][10 - j - 1];
                            l = BufToPrint[index];
                            index_1++;
 
                        }
                        else
                        {
                            //(char) -  это НЕ явное преобразование из string в char. 
                            // Допустимо только для настедующих типов. Например, int можно перевести в double. ( не помню примеры).
                            // Вот другой пример.В нём y равен 8, а дробная часть отрезается. Вообще такое Не явное преобразование не всегда допустимо!
                            // Например тут Не применяется округление, что может повлиять на расчёты!                        
                            //Удалить! Является прмером!
                            double g = 8.8;
                            int y = (int)g;
                            // Тут применяется округление!
                            int r = (int)Math.Round(g);
 
                        } index++;
                    }
                    else { index++; }
 
                }
                Console.WriteLine(" ");
            }
            // Цикл переворачивания и сохр в памяти
            index = 0;
            for (int i = grid.GetLength(0) - 1; i >= 0; i--)
            {
                for (int j = 0; j < grid.GetLength(1); j++)
                {
                    int v = BufToPrint[index];
                    if (BufToPrint[index] == 0)
                    {
 
 
                        if (grid[i, j] == 1)
                        {
                            int h = buf.Length - i;
                            int k = 10 - j;
                            char f = word2[index_1];
                            BufToPrint[index] = word2[index_1]; //buf[buf.Length - i - 1][10 - j - 1];
                            l = BufToPrint[index];
                            index_1++;
 
                        }
                        else
                        {
                            //(char) -  это НЕ явное преобразование из string в char. 
                            // Допустимо только для настедующих типов. Например, int можно перевести в double. ( не помню примеры).
                            // Вот другой пример.В нём y равен 8, а дробная часть отрезается. Вообще такое Не явное преобразование не всегда допустимо!
                            // Например тут Не применяется округление, что может повлиять на расчёты!                        
                            //Удалить! Является прмером!
                            double g = 8.8;
                            int y = (int)g;
                            // Тут применяется округление!
                            int r = (int)Math.Round(g);
 
                        } index++;
                    }
                    else { index++; }
 
                }
                Console.WriteLine(" ");
            }
 
            // Цикл переворачивания и сохр в памяти
            index = 0;
            for (int i = 0; i < grid.GetLength(0); i++)
            {
                for (int j = grid.GetLength(1) - 1; j >= 0; j--)
                {
                    int v = BufToPrint[index];
                    if (BufToPrint[index] == 0)
                    {
 
 
                        if (grid[i, j] == 1)
                        {
                            if (index == 20)
                            { }
                            int h = buf.Length - i;
                            int k = 10 - j;
                            char f = word2[index_1];
                            BufToPrint[index] = word2[index_1]; //buf[buf.Length - i - 1][10 - j - 1];
                            l = BufToPrint[index];
                            index_1++;
 
                        }
                        else
                        {
   
 
                        } index++;
                    }
                    else { index++; }
 
                }
                Console.WriteLine(" ");
            }
 
            // поворот решетки на 180 градусов по часовой стрелке
            Console.WriteLine("Ответ");
            //вывод   
            //int Ney_Line = 0;    
            index = 0; //BufToPrint.Count;
            for (int i = 0; i < BufToPrint.Count; i++)
            {
                l = BufToPrint[i];
                Console.Write(l);
 
                /*
                 if (Ney_Line != 10)
                 {
                     if (BufToPrint[i] == 0)
                     { Console.Write("0"); }
                     else { l = BufToPrint[i];
                     Console.Write(l); }
 
                     Ney_Line++;
                   
 
                 }
                 else
                 {
                     if (BufToPrint[i] == 0)
                     { Console.Write("0"); }
                     else {l = BufToPrint[i];
                     Console.Write(l); }
                     Ney_Line = 0;
                     Console.WriteLine();
 
                 }*/
            }
            Console.ReadLine();
        }
    }
}
0
167 / 106 / 30
Регистрация: 19.01.2013
Сообщений: 847
29.11.2014, 09:12 7
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace _1lb
{
    class cipher
    {
        static void Main(string[] args)
        {
            // Вот это вот. Вообще вызывает сомнения. Надо было хранить или в массиве Char или в List. Лучше в Char.
            // Тогда бы можно было бы проще работать.
            // Смотри [url]http://msdn.microsoft.com/ru-ru/library/b873y76a(v=vs.110).aspx[/url]
            // Пригодится. К сожалению почему- то не удалось обратиться к buf. Она доступна только для чтения, а разбивать строку 
            //указанным методом, затем опять собирать- не вариант! 
            string[] buf = new string[6] {
                      "ШИФРРЕШЕТК",
                      "АЯВЛЯЕТСЯЧ",
                      "АСТНЫМСЛУЧ",
                      "АЕМШИФРАМА",
                      "РШРУТНОЙПЕ",
                      "РЕСТАНОВКИ"};
            string word2 = "ШИФРРЕШЕТКАЯВЛЯЕТСЯЧАСТНЫМСЛУЧАЕМШИФРАМАРШРУТНОЙПЕРЕСТАНОВКИ";
            char[,] buf_1 = new char[6, 10];
            int index_1 = 0;
            int[,] grid = new int[6, 10]{
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 0, 0, 0, 1, 0, 1, 1, 0, 0},
{0, 1, 0, 0, 0, 1, 0, 0, 0, 1},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 1, 0, 0, 1, 1, 0, 0, 1}
};
            List<char> BufToPrint = new List<char>();
 
            // вывод зашифрованного сообщения
            for (int i = 0; i < 6; i++)
            {
                Console.WriteLine(buf[i]);
            }
            Console.WriteLine("");
 
            Console.WriteLine("0:");
            char l;
            int index = 0;
            for (int i = 0; i < grid.GetLength(0); i++)
            {
                for (int j = 0; j < grid.GetLength(1); j++)
                {
 
 
                    if (grid[i, j] == 1)
                    {
                        
                        BufToPrint.Add(word2[index_1]);
                        l = BufToPrint[index];
                        Console.Write(l);
                        index_1++;
                    }
                    else
                    {
                        Console.Write("0");                        
                        BufToPrint.Add((char)0);
                        l = BufToPrint[index];                        
 
 
                    }
                    index++;
 
                }
                Console.WriteLine(" ");
            }
 
 
            // Цикл переворачивания и сохр в памяти
            index = 0;
            char p = word2[index_1-1];
            for (int i = grid.GetLength(0)-1; i >= 0 ; i--)
            {
                for (int j = grid.GetLength(1)-1; j >=0 ; j--)
                {
                    int v = BufToPrint[index];
                    if (BufToPrint[index] == 0)
                    {
 
 
                        if (grid[i, j] == 1)
                        {
                            int h = buf.Length - i;
                            int k = 10 - j;
                            char f = word2[index_1];
                            BufToPrint[index] = word2[index_1]; //buf[buf.Length - i - 1][10 - j - 1];
                            l = BufToPrint[index];
                            index_1++;
 
                        }
                        else
                        {
                            //(char) -  это НЕ явное преобразование из string в char. 
                            // Допустимо только для настедующих типов. Например, int можно перевести в double. ( не помню примеры).
                            // Вот другой пример.В нём y равен 8, а дробная часть отрезается. Вообще такое Не явное преобразование не всегда допустимо!
                            // Например тут Не применяется округление, что может повлиять на расчёты!                        
                            //Удалить! Является прмером!
                            double g = 8.8;
                            int y = (int)g;
                            // Тут применяется округление!
                            int r = (int)Math.Round(g);
 
                        } index++;
                    }
                    else { index++; }
 
                }
                
            }
            // Цикл переворачивания и сохр в памяти
            index = 0;
            for (int i = grid.GetLength(0) - 1; i >= 0; i--)
            {
                for (int j = 0; j < grid.GetLength(1); j++)
                {
                    int v = BufToPrint[index];
                    if (BufToPrint[index] == 0)
                    {
 
 
                        if (grid[i, j] == 1)
                        {
                            int h = buf.Length - i;
                            int k = 10 - j;
                            char f = word2[index_1];
                            BufToPrint[index] = word2[index_1]; //buf[buf.Length - i - 1][10 - j - 1];
                            l = BufToPrint[index];
                            index_1++;
 
                        }
                        else
                        {
                            //(char) -  это НЕ явное преобразование из string в char. 
                            // Допустимо только для настедующих типов. Например, int можно перевести в double. ( не помню примеры).
                            // Вот другой пример.В нём y равен 8, а дробная часть отрезается. Вообще такое Не явное преобразование не всегда допустимо!
                            // Например тут Не применяется округление, что может повлиять на расчёты!                        
                            //Удалить! Является прмером!
                            double g = 8.8;
                            int y = (int)g;
                            // Тут применяется округление!
                            int r = (int)Math.Round(g);
 
                        } index++;
                    }
                    else { index++; }
 
                }
            }
 
            // Цикл переворачивания и сохр в памяти
            index = 0;
            for (int i = 0; i < grid.GetLength(0); i++)
            {
                for (int j = grid.GetLength(1) - 1; j >= 0; j--)
                {
                   
                    if (BufToPrint[index] == 0)
                    {
 
 
                        if (grid[i, j] == 1)
                        {
                            if (index == 20)
                            { }
                            int h = buf.Length - i;
                            int k = 10 - j;
                            char f = word2[index_1];                           
                            BufToPrint[index] = f;                           
                            l = BufToPrint[index];
                            index_1++;
 
                        }
                        else
                        {
   
 
                        } index++;
                    }
                    else { index++; }
 
                }
               
            }
 
            // поворот решетки на 180 градусов по часовой стрелке
            Console.WriteLine("Ответ");
            //вывод   
            int Ney_Line = 1;    
            index = 0; //BufToPrint.Count;
            for (int i = 0; i < BufToPrint.Count; i++)
            {
                l = BufToPrint[i];
                Console.Write(l);
                if (Ney_Line == 10)
                { Console.WriteLine(""); Ney_Line = 0; }
                Ney_Line++;
            }
            Console.ReadLine(); 
                
        }
    }
}
0
29.11.2014, 09:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2014, 09:12
Помогаю со студенческими работами здесь

Как привязать свой сертификат SSL к приложению SelfHost для использования шифрования TSL?
Приветствую! Вопрос в следующем: Делаю самостоятельное приложение (SelfHost) API. С http работает...

Повернуть для RigidBody
Доброго времени суток, у меня объект движется прямо через RigidBody, но если я поверну объект на...

Написать программу, которая рисует на экране решётку.
Написать программу, которая рисует на экране решётку.

Определить вписанный в решётку прямоугольник максимальной площади
На квадратном клетчатом листе бумаги 8x8 клеток заштрихована часть клеток (пример на рисунке)....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru