Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.05.2019
Сообщений: 5
1

Разбор кода. Нужно разобрать что за что отвечает

11.06.2019, 15:00. Просмотров 1152. Ответов 11
Метки нет (Все метки)

Всем привет!
Прошу Вас посодействовать мне в разборе кода.
Буду очень признателен!


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
int N = 7, M = 8, number = 0, k = 0, h = 0;
            int[,] arr = new int[N, M];
            bool up = false, down = false;
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    arr[k, h] = number++;
                    if (j == 0 && i == 0)
                    {
                        arr[k, h] = number++;
                        k++;
                        continue;
                    }
                    if (h == 0 && k < N)
                    {
                        if (k == N - 1)
                        {
                            h++;
                            down = false;
                            up = true;
                            continue;
                        }
                        if (arr[k - 1, h + 1] == 0)
                        {
                            h++;
                            k--;
                        }
                        else
                        {
                            k++;
                            up = true;
                            down = false;
                        }
                        continue;
                    }
                    if (k == 0 && h < M)
                    {
                        if (h == M - 1)
                        {
                            k++;
                            down = true;
                            up = false;
                            continue;
                        }
                        if (arr[k + 1, h - 1] == 0)
                        {
                            h--;
                            k++;
                            down = true;
                            up = false;
                            continue;
                        }
                        h++;
                        down = true;
                        up = false;
                        continue;
                    }
 
                    if (down)
                    {
                        if (h < M - 1 && arr[k - 1, h + 1] != 0 && k == N - 1)
                        {
                            h++;
                            up = true;
                            down = false;
                            continue;
                        }
                        k++;
                        h--;
                    }
                    if (up)
                    {
                        if (k < N - 1 && h == M - 1)
                        {
                            k++;
                            up = false;
                            down = true;
                            continue;
                        }
                        k--;
                        h++;
                    }
                }
            }
 
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    Console.Write(arr[i, j] + " ");
                }
                Console.Write("\n");
            }
            Console.ReadKey();
        }
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2019, 15:00
Ответы с готовыми решениями:

Ошибка 678:удаленный компьютер не отвечает.что это?что нужно сделать чтобы работало?
ЧТО ЭТО?КАК С ЭТИМ БОРОТЬСЯ?

Как разобрать какой файл за что отвечает wordpress
Привет, форумчане. Проблема следующая: на главной странице изменила ксс мета-информации, он же...

Прокомментировать за что отвечает каждая строка кода
Добрый день. Здесь представлен код генератора нормально распределенных случайных чисел. Будьте...

Разбор кода. Что такое base()?
class Employee : Person { public string Company { get; set; } public Employee(string...

11
107 / 72 / 41
Регистрация: 14.12.2015
Сообщений: 854
11.06.2019, 15:05 2
Единственный вопрос: что тут не понятного?
0
0 / 0 / 0
Регистрация: 28.05.2019
Сообщений: 5
11.06.2019, 15:29  [ТС] 3
Если бы было все понятно,я бы не постил тему. Мне нужно разобраться что за что отвечает и как примерно работает код.
0
637 / 473 / 218
Регистрация: 02.10.2012
Сообщений: 1,648
11.06.2019, 16:06 4
может есть задание? просто разбираться в такой "прекрасной" реализации не хочется
0
Life Builder
519 / 487 / 372
Регистрация: 12.01.2011
Сообщений: 1,705
Завершенные тесты: 7
11.06.2019, 16:24 5
Цитата Сообщение от XXXELUS Посмотреть сообщение
Если бы было все понятно,я бы не постил тему.
Скажите конкретно(строка или какой-нибудь оператор) что именно вам непонятно?
0
0 / 0 / 0
Регистрация: 28.05.2019
Сообщений: 5
11.06.2019, 17:30  [ТС] 6
Bool-е переменные UP и Down , оператор continue
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
if (h == 0 && k < N)
                    {
                        if (k == N - 1)
                        {
                            h++;
                            down = false;
                            up = true;
                            continue;
                        }
                        if (arr[k - 1, h + 1] == 0)
                        {
                            h++;
                            k--;
                        }
                        else
                        {
                            k++;
                            up = true;
                            down = false;
                        }
                        continue;
                    }
                    if (k == 0 && h < M)
                    {
                        if (h == M - 1)
                        {
                            k++;
                            down = true;
                            up = false;
                            continue;
                        }
                        if (arr[k + 1, h - 1] == 0)
                        {
                            h--;
                            k++;
                            down = true;
                            up = false;
                            continue;
                        }
                        h++;
                        down = true;
                        up = false;
                        continue;
0
637 / 473 / 218
Регистрация: 02.10.2012
Сообщений: 1,648
11.06.2019, 17:37 7
continue переходи на следующую итерацию цикла, UP и Down это лишь названия, можешь назвать их как душе угодно, смысл в них один
0
0 / 0 / 0
Регистрация: 28.05.2019
Сообщений: 5
11.06.2019, 17:39  [ТС] 8
Задание:нужно было заполнить массив зигзагообразным способом
Можно по подробнее зачем нужны эти 2 переменные?
0
266 / 207 / 135
Регистрация: 03.10.2017
Сообщений: 759
Записей в блоге: 1
Завершенные тесты: 3
11.06.2019, 18:02 9
Лучший ответ Сообщение было отмечено XXXELUS как решение

Решение

XXXELUS, Массив зигзагами, это как?

Добавлено через 28 секунд
XXXELUS, У вас матрица в коде

Добавлено через 8 минут
Всё же гораздо проще

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int i = 0; i < Arr.GetLength(0); i++)
            {
                for (int j = 0; j < Arr.GetLength(1); j++)
                {
                    int element = int.Parse(Console.ReadLine());
 
                    if (i % 2 == 0)
                    {
                        Arr[i, j] = element;
                    }
                    else
                    {
                        Arr[i, Arr.GetLength(1) - j - 1] = element;
                    }
                }
            }
Добавлено через 2 минуты
А в коде у вас Up Down Это вверх вниз он идёт. Я вам написал влево-вправо.

Добавлено через 1 минуту
Вот так вверх вниз

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int i = 0; i < Arr.GetLength(1); i++)
            {
                for (int j = 0; j < Arr.GetLength(0); j++)
                {
                    int element = int.Parse(Console.ReadLine());
 
                    if (i % 2 == 0)
                    {
                        Arr[j, i] = element;
                    }
                    else
                    {
                        Arr[ Arr.GetLength(0) - j - 1, i] = element;
                    }
                }
            }
Добавлено через 50 секунд
Можно место i%2 Использовать просто булеву перменную одну.
1
0 / 0 / 0
Регистрация: 28.05.2019
Сообщений: 5
11.06.2019, 18:27  [ТС] 10
Спасибо!
0
593 / 350 / 198
Регистрация: 02.06.2016
Сообщений: 598
Завершенные тесты: 1
11.06.2019, 19:18 11
XXXELUS, есть короткий код для диагональных зигзагов
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
static void Main()
{
    int n = 5, m = 7;
    var a = new int[n, m];
 
    // заполнение диагональными зигзагами
    // x, y - координаты элемента матрицы
    // k - значения которыми заполняется матрица
    // i - номер диагонали
    // j - номер текущей ячейки на текущей диагонали (от 0 до m)
    // dx - направление заполения диагонали (+1 или -1)
    for (int i = 0, k = 1, dx = -1; i < m + n - 1; i++, dx *= -1)
        for (int x = dx < 0 ? m - 1 : 0, j = 0; j < m; x += dx, j++)
            if (i - x is int y && y >= 0 && y < n) a[y, x] = k++;
 
    // вывод
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++)
            Console.Write($"{a[i, j], 3}");
        Console.WriteLine();
    }
 
    Console.ReadLine();
}
1
266 / 207 / 135
Регистрация: 03.10.2017
Сообщений: 759
Записей в блоге: 1
Завершенные тесты: 3
12.06.2019, 19:38 12
Aael, Мне кажется, у меня получилось проще, но мне так кажется.
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
 int n = 5, m = 2;
            int[,] Arr = new int[n, m];
 
            int row = Arr.GetLength(0)-1;
            int column = 0;
 
            int el = 1;
 
            for (int i=0;i< Arr.GetLength(0) + Arr.GetLength(1) - 1; i++)
            {
                if (i % 2 == 0)
                {
                    while (row>=0 && column >= 0)
                    {
                        Arr[row, column] = el++;//int.Parse(Console.ReadLine());
 
                        row--;
                        column--;
                    }
 
                    if (row < 0)
                    {
                        row++;
                        column += 2;
                    }
                    else if (column < 0)
                    {
                        column++;
                    }
 
                    
                }
                else
                {
                    while (row < Arr.GetLength(0) && column < Arr.GetLength(1))
                    {
                        Arr[row, column] = el++;// int.Parse(Console.ReadLine());
 
                        row++;
                        column++;
                    }
 
                    if (column == Arr.GetLength(1))
                    {
                        column--;
                        row -= 2;
                    }
                    else if (row == Arr.GetLength(0))
                    {
                        row--;
                    }
                }                
 
            }
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2019, 19:38

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Нужно описание исходного кода скринсейвера, т.е. где что происходит, что чему и для чего присваивается и т.д
unit unitMain; interface uses Windows, Classes, Graphics, Forms, Registry; type ...

нужно разобрать что написано
Я JS не знаю, но этот кусок очень заинтересовал, можете написать комментарии? var tm39197 = '7';...

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

Можете на псевдокоде объяснить, что тут за что отвечает?
class Count{ public static void main(String args){ int a, b; boolean isPrime; for(a =...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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