Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 10.08.2010
Сообщений: 4

Заполнить матрицу множеством натуральных чисел по спирали против часовой стрелки

10.08.2010, 14:08. Показов 4941. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
заполнить матрицу NxN множество натуральных чисел по спирали против часовой стрелке по VBA
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.08.2010, 14:08
Ответы с готовыми решениями:

Заполнить матрицу по спирали против часовой стрелки
Ребят,помогите пожалуйста. Нужно заполнить матрицу числами по спирали против часовой стрелки. Заранее спасибо.

Заполнить матрицу по спирали, закрученной по часовой стрелке
Добрый день! Прошу помощи, ссылок на примерные задачи, ссылки почитать как можно решить данную задачу. Задача: В VBA вывести таблицу...

Нужно заполнить порядковыми номерами квадратную матрицу NxN по спирали по часовой стрелке
Нужно заполнить порядковыми номерами квадратную матрицу NxN по спирали по часовой стрелке! Помогите пожалуйста.

7
исследователь
325 / 104 / 3
Регистрация: 18.03.2010
Сообщений: 1,079
Записей в блоге: 2
10.08.2010, 16:00
Цитата Сообщение от Dante123 Посмотреть сообщение
заполнить матрицу NxN множество натуральных чисел по спирали против часовой стрелке по VBA
Вопросы есть:
какие числа, откуда их брать, заполнить на листе excele или в массиве
0
0 / 0 / 0
Регистрация: 10.08.2010
Сообщений: 4
10.08.2010, 18:07  [ТС]
заполнить порядковыми номерами квадратную матрицу NxN по спирали против часовой стрелки.

Добавлено через 3 минуты
и нужно заполнить на листе excele, памоги плиз
0
7 / 7 / 2
Регистрация: 12.07.2010
Сообщений: 31
10.08.2010, 18:15
я специалист в Delphi но суть алгоритма раскажу
4 переменніх merge_top=1, merge_left=1 merge_right=N merge_bottom=N
и c=1;
Delphi
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
while c<=n*n do
   begin
   For i:=merge_top to merge_bottom do
      begin
      A[i,Merge_left]:=c;
      c:=c+1;
      end;  
   Merge_left:=Merge_left+1;
   For i:=Merge_left to Merge_right do
      begin
      A[Merge_bottom,i]:=c;
      c:=c+1;
      end;  
   Merge_bottom:=Merge_bottom-1;
   For i:=Merge_bottom downto Merge_top do
      begin
      A[i,Merge_right]:=c;
      c:=c+1;
      end;  
   Merge_right:=Merge_right-1;
   For i:=Merge_right downto Merge_left do
      begin
      A[Merge_top,i]:=c;
      c:=c+1;
      end;  
   Merge_top:=Merge_top+1;
   end; // c<=N*N Вычерчили квадрат если есть полость в нутри вычерчим еще квадрат  т.д.
1
0 / 0 / 0
Регистрация: 10.08.2010
Сообщений: 4
10.08.2010, 18:54  [ТС]
спасибо щас папробую

Добавлено через 14 минут
и всетаки опыта и знания нехвотает доделать прогу

Добавлено через 8 минут
есть программа
Цитата Сообщение от Dante123 Посмотреть сообщение
заполнить порядковыми номерами квадратную матрицу NxN по спирали ПО часовой стрелки.
Visual Basic
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
Sub Spiral()
   Dim N As Byte, i As Byte, m As Byte
   Dim num As Integer
   Dim n_spir As Integer
   Dim r As Range
   
   Cells.ClearContents
   Cells.Borders.LineStyle = xlNone
   Set r = Range("B2")
   
   num = 1
   N = Val(InputBox("Введи N:", , 10))
   If N = 0 Then Exit Sub
   
   ReDim a(1 To N, 1 To N) As Integer
 
   For n_spir = 0 To N \ 2 - 1
                   m = N - 1 - 2 * n_spir
      For i = 1 To m
         a(n_spir + 1, i + n_spir) = num: num = num + 1 'вправо
      Next i
      
      For i = 1 To m
         a(i + n_spir, N - n_spir) = num: num = num + 1   'вниз
      Next i
      
      For i = 1 To m
         a(N - n_spir, N - n_spir - i + 1) = num: num = num + 1     'влево
      Next i
      
      For i = 1 To m
         a(N - n_spir - i + 1, n_spir + 1) = num: num = num + 1  'вверх
      Next i
   Next n_spir
   If N Mod 2 = 1 Then a(N \ 2 + 1, N \ 2 + 1) = N ^ 2
   
   r.Resize(N, N) = a:   формат r, N
End Sub
 
Sub формат(r As Range, N As Byte)
   Dim i As Byte, n_spir As Byte
   
   If N Mod 2 = 0 Then n_spir = N \ 2 Else n_spir = N \ 2 + 1
   For i = 0 To n_spir - 1
      With r.Offset(i, i).Resize(N - 2 * i, N - 2 * i)
         .Borders(xlEdgeLeft).Weight = xlMedium
         .Borders(xlEdgeTop).Weight = xlMedium
         .Borders(xlEdgeBottom).Weight = xlMedium
         .Borders(xlEdgeRight).Weight = xlMedium
      End With
      With r.Offset(i, i)
         .Borders(xlEdgeBottom).Weight = xlMedium
         If i >= 1 Then .Borders(xlEdgeLeft).LineStyle = xlNone
      End With
   Next i
End Sub

можите памоч переделать ее чтобы заполняла порядковыми номерамиквадратную матрицу NxN по спирали против часовой стрелки.
0
Частенько бываю
 Аватар для Vlanib
750 / 331 / 42
Регистрация: 20.06.2007
Сообщений: 854
11.08.2010, 14:20
Перед запуском макроса выдели квадратный диапазон ячеек
Visual Basic
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
Sub Spiral_Fill()
Dim N As Integer, i As Integer, j As Integer, iNumOfC As Integer, iIter As Integer
iIter = 1
With Selection
N = .Rows.Count
For iNumOfC = 1 To Int(N / 2 + 0.5)
    'Ëåâàÿ ñòîðîíà
    j = iNumOfC
    For i = iNumOfC To N - (iNumOfC - 1)
        .Cells(i, j) = iIter
        iIter = iIter + 1
    Next
    'Íèæíÿÿ ñòîðîíà
    i = N - (iNumOfC - 1)
    For j = iNumOfC + 1 To N - (iNumOfC - 1)
        .Cells(i, j) = iIter
        iIter = iIter + 1
    Next
    'Ïðàâàÿ ñòîðîíà
    j = N - (iNumOfC - 1)
    For i = N - iNumOfC To iNumOfC Step -1
        .Cells(i, j) = iIter
        iIter = iIter + 1
    Next
    'Âåðõíÿÿ ñòîðîíà
    i = iNumOfC
    For j = N - iNumOfC To i + 1 Step -1
        .Cells(i, j) = iIter
        iIter = iIter + 1
    Next
Next
End With
End Sub
1
7 / 7 / 2
Регистрация: 12.07.2010
Сообщений: 31
11.08.2010, 15:08
Visual Basic
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
Sub Spiral_Fill()
Dim N As Integer, i As Integer, m_l as integer, m_t as integer, m_b as integer, m_r as integer, Iter As Integer
Iter = 1
 
N = Val(InputBox("Введи N:", , 10))
m_l=1
m_t=1
m_r=N
m_b=N
 
If N = 0 Then Exit Sub
 
ReDim a(1 To N, 1 To N) As Integer
 
do while iter<N*N 
For i = m_t To m_b
'Левая сторона
A(m_l,i)=iter
iter=iter+1
Next i 
m_l=m_l+1
For i = m_l To m_r
'нижняя сторона
A(i,m_b)=iter
iter=iter+1
Next i 
m_b=m_b-1
For i = m_b To m_t step -1
'правая сторона
A(m_r,i)=iter
iter=iter+1
Next i 
m_r=m_r-1
For i = m_r To m_l step -1
'Верхняя сторона
A(i,m_t)=iter
iter=iter+1
Next i 
m_t=m_t+1
loop
' тут вывод вставь куда тебе надо из массива А
End Sub
1
0 / 0 / 0
Регистрация: 10.08.2010
Сообщений: 4
13.08.2010, 22:20  [ТС]
всем Огромное спасибо , все работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.08.2010, 22:20
Помогаю со студенческими работами здесь

Изобразить вращение против часовой стрелки отрезка длиной R вокруг точки с координатами (x,y)
Не работает программа. В чем может быть ошибка? SCREEN 12 DECLARE SUB per() dim as integer x1,y1,R dim as double xr,yr print...

Заполнить матрицу по спирали против часовой стрелки
помогите поменять циклы в коде и сделать такую спираль: 1 32 31 30 29 28 27 26 25 2 33 56 55 54 53 52 51 24 3 34 57 72 71 70 69 50 23...

Заполнить матрицу по спирали, начинающейся в левом верхнем углу, против часовой стрелки (+ блок схема)
Матрицу m x n заполнить натуральными числами от 1 до mn по спирали, начинающейся в левом верхнем углу и закрученной против часовой стрелки....

Массив A[2*n+1][2*n+1] заполнить по спирали против часовой стрелки, начиная из центра
Можете пожалуйста помочь, я должен решить задачки и вот одна из них: Дано число n. Создайте массив A и заполните его по спирали,...

Заполнить двумерный массив цифрами по спирали, против часовой стрелки
Доброго времени суток. Вот задание : Заполнить двумерный массив цифрами по спирали, против часовой стрелки. Вот решение: ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru