Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
nightrage
0 / 0 / 0
Регистрация: 29.04.2015
Сообщений: 2
#1

Заполнение двумерного массива по спирали - C#

14.05.2015, 00:39. Просмотров 1008. Ответов 2
Метки нет (Все метки)

Необходимо заполнить двумерный массив по спирали. Что нужно сделать, чтобы:
1) он заполнялся чередующимися нулями и единицами;
2) назначить другую точку старта (например, правый нижний угол);
3) выбрать другое направление для заполнения (по часовой стрелке)?
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
            int N = 3, M = 3;
            int[,] A = new int[N, M];
 
 
            int row = 0, col = 0, dx = 1, dy = 0, dirChanges = 0, gran = M;
 
            for (int i = 0; i < A.Length; i++)
            {
                A[col, row] = i + 1;
                if (--gran == 0)
                {
                    gran = M * (dirChanges % 2) + N * ((dirChanges + 1) % 2) - (dirChanges / 2 - 1) - 2;
                    int temp = dx;
                    dx = -dy;
                    dy = temp;
                    dirChanges++;
                }
                col += dx;
                row += dy;
            }
 
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    Console.Write(A[i, j] + " ");
                }
                Console.WriteLine();
            }
 
 
            Console.ReadKey();
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2015, 00:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнение двумерного массива по спирали (C#):

Заполнение любого двумерного массива по спирали - C#
как заполнить любой двумерный массив по спирали?

Заполнение квадратного массива по спирали C# - C#
Добрый день. Как заполнить квадратный массив по спирали начиная с центра против часовой стрелки. Например 12 11 10 9 24 ...

Перевод c Pascal на C#: заполнение массива по спирали - C#
Помогите, пожалуйста, с Паскаля перевести в С# Задание: uses crt; var a: array of integer; i,m,k,n: integer; begin ...

Переписать программу c Pascal на С#. Заполнение массива по спирали - C#
Необходимо переписать программу с Pascal на С#. Эта программа заполняет массив по спирали. var s:array of integer; i,j,k,p:integer; ...

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

Заполнение двумерного массива из файла - C#
Доброго времени суток! Прошу вас, помогите! Необходимо заполнить двумерный массив из файла вида: книга, журнал бумага, книга ...

2
Psilon
Master of Orion
Эксперт .NET
5909 / 4806 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
14.05.2015, 11:09 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
nightrage, проще всего заполнять массив текущим алгоритмом, а потом переворачивать его в случае старта из другой точки. Аналогично "против часовой стрелки" просто зеркалится

Добавлено через 40 секунд
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
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication48
{
    class Program
    {
        static void Main(string[] args)
        {
            int N = 3, M = 3;
            var a = CreateSnakeArrayVsClock(N, M);
 
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    Console.Write(a[i, j] + " ");
                }
                Console.WriteLine();
            }
 
 
            Console.ReadKey();
        }
 
        private static int[,] CreateSnakeArrayVsClock(int n, int m)
        {
            var arr = CreateSnakeArray(n, m);
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n/2; j++)
                {
                    var tmp = arr[i, j];
                    arr[i, j] = arr[i, m - j - 1];
                    arr[i, m - j - 1] = tmp;
                }
            }
            return arr;
        }
 
        private static int[,] CreateSnakeArray(int n, int m)
        {
            int[,] A = new int[n, m];
            int row = 0, col = 0, dx = 1, dy = 0, dirChanges = 0, gran = m;
 
            for (int i = 0; i < A.Length; i++)
            {
                A[col, row] = i + 1;
                if (--gran == 0)
                {
                    gran = m*(dirChanges%2) + n*((dirChanges + 1)%2) - (dirChanges/2 - 1) - 2;
                    int temp = dx;
                    dx = -dy;
                    dy = temp;
                    dirChanges++;
                }
                col += dx;
                row += dy;
            }
            return A;
        }
    }
}
1
Psilon
Master of Orion
Эксперт .NET
5909 / 4806 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
19.05.2015, 17:34 #3
только там не m, а n во внутреннем цикле...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2015, 17:34
Привет! Вот еще темы с ответами:

Заполнение двумерного массива по столбцам - C#
Напишите программу, которая заполняет массив из N чисел (каждое между 1 и 30). Для каждого просчитанного числа ваша программа должна...

Заполнение двумерного массива по правилу - C#
Здравствуйте, помогите решить задачку: Заполнить целочисленный массив А, не вводя значения его элементов с клавиатуры, следующим образом:...

Заполнение двумерного массива из файла - C#
Есть файл вещественных чисел для нижнетреугольной матрицы (файл содержит ненулевую часть матрицы, по строкам), нужно считать их в массив...

Заполнение двумерного массива из файла - C#
Здравствуйте! Необходимо заполнить двумерный массив из txt файла следующим образом: первый элемент массива-слово до &quot;:&quot;, второй элемент...


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

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

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