Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/20: Рейтинг темы: голосов - 20, средняя оценка - 4.65
Valery1
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 2
1

Заполнить массив последовательными натуральными числами, идущими по спирали

09.11.2011, 23:01. Просмотров 3637. Ответов 9
Метки нет (Все метки)

привет всем
не могу написать программу, помогите пожалуйста
можно просто алгоритм с соответствующими операциями

Дан квадратный двумерный массив n на n. Заполнить его последовательными натуральными числами, идущими по спирали.
Mассив заполнен числами от 1 по n^2
Cпираль начинается с левого верхнего угла и идет по часовой стрелке
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2011, 23:01
Ответы с готовыми решениями:

Заполнить массив натуральными числами от 1 до n
Помогите реализовать программу. В массивах полный ноль): Заполнить массив...

Заполнить массив числами по формуле
Здравствуйте! Надо заполнить одномерный массив случайными числами от...

Заполнить массив А случайными числами
Помогите пожалуйста! 1.Заполнить таблицу A(1:N)так, чтобы каждый элемент с...

Заполнить массив А(5,5) произвольными числами с клавиатуры
создать проект заполнения массива А(5,5) произвольными числами с клавиатуры....

Как заполнить массив заданными числами?
За данными числам n и m заполнить двумерный массив размером n × m числами от 1...

9
Dzhej-Dzhej
Заблокирован
10.11.2011, 10:42 2
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
Private Sub Command1_Click()
    Const n = 7
    Dim s(n, n) As Integer
    Dim i As Integer, j As Integer, k As Integer, p As Integer
    Dim z As String
    i = 0
    k = 0
    p = 1
    While i < n * n
        k = k + 1
        For j = k To n - k + 1
           i = i + 1
           s(k, j) = p
           p = p + 1
        Next
        For j = k + 1 To n - k + 1
           i = i + 1
           s(j, n - k + 1) = p
           p = p + 1
        Next
        For j = n - k To k Step -1
           i = i + 1
           s(n - k + 1, j) = p
           p = p + 1
        Next
        For j = n - k To k + 1 Step -1
           i = i + 1
           s(j, k) = p
           p = p + 1
        Next
    Wend
    For i = 1 To n
        For j = 1 To n
            z = z + CStr(s(i, j)) + vbTab
        Next
        z = z + vbCrLf
    Next
    Print z
End Sub
2
SoftIce
es geht mir gut
10467 / 3979 / 1016
Регистрация: 27.07.2011
Сообщений: 9,652
Завершенные тесты: 1
10.11.2011, 15:38 3
Dzhej-Dzhej, а ты понял, как это по спирали, с левого верхнего угла? У нас такого не было.Хотя я и учился в политехе. Может другая программа?
Нет, я не умничаю, всё считается с левого верхнего угла, но просто у нас такого не было.

Добавлено через 13 минут
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
While
Уже такого не было. Do Loop.
1
Dzhej-Dzhej
Заблокирован
10.11.2011, 16:09 4
Не совсем понятно, о чем идет речь.
Цитата Сообщение от SoftIce.net Посмотреть сообщение
Dzhej-Dzhej, а ты понял, как это по спирали, с левого верхнего угла?
И по часовой стрелке.
Цитата Сообщение от SoftIce.net Посмотреть сообщение
Может другая программа?
В смысле?
Цитата Сообщение от SoftIce.net Посмотреть сообщение
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
While
Уже такого не было. Do Loop.
В BV6 этих While-Do-Loop'ов штук восемь, я их все не помню.
While хорош тем, что переводить с языка на язык удобно.
По секрету: код найден в интернете на паскале(стоял там While - пусть стоит), в алгоритм я не вдумывался.
2
SoftIce
es geht mir gut
10467 / 3979 / 1016
Регистрация: 27.07.2011
Сообщений: 9,652
Завершенные тесты: 1
10.11.2011, 16:15 5
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
В смысле?
В смысле другая программа обучения, может я не так выразился.
1
Dzhej-Dzhej
10.11.2011, 16:20
  #6

Не по теме:

Цитата Сообщение от SoftIce.net Посмотреть сообщение
В смысле другая программа обучения, может я не так выразился.
А я терялся в догадках: IDE или код:).
По VB у меня программы обучения - исходники, которые нужно править(поддержка, как-бы) и интернет.

1
SoftIce
es geht mir gut
10467 / 3979 / 1016
Регистрация: 27.07.2011
Сообщений: 9,652
Завершенные тесты: 1
10.11.2011, 16:45 7
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
И по часовой стрелке
С середины - понятно, а с краю_ никак.

Добавлено через 2 минуты
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
А я терялся в догадках: IDE или код
А у тебя программа- это значит программа(бзик программера)

Добавлено через 11 минут
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
По VB у меня программы обучения - исходники, которые нужно править(поддержка, как-бы) и интернет
И меня тоже учил Сергей Дмитриевич Шаталин(Низкий поклон ему).

Добавлено через 8 минут
Цитата Сообщение от SoftIce.net Посмотреть сообщение
И меня тоже учил Сергей Дмитриевич Шаталин(Низкий поклон ему
Он также выражался.
1
Dzhej-Dzhej
Заблокирован
10.11.2011, 16:45 8
Цитата Сообщение от SoftIce.net Посмотреть сообщение
С середины - понятно, а с краю_ никак.
Разница в том, что в одном случае спираль расширяется, а в другом сужается.
Здесь проходим по столбцу\строке и поворачиваем, когда доходим до конца столбца\строки или до заполненной ячейки.
Примерно так.
1
SoftIce
es geht mir gut
10467 / 3979 / 1016
Регистрация: 27.07.2011
Сообщений: 9,652
Завершенные тесты: 1
10.11.2011, 17:00 9
Добавлено через 6 минут
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
Разница в том, что в одном случае спираль расширяется, а в другом сужается.
Здесь проходим по столбцу\строке и поворачиваем, когда доходим до конца столбца\строки или до заполненной ячейки
Кривая какая то спираль, но сделать можно.Памирыч, мы не флудим.
1
Апострофф
Заблокирован
11.11.2011, 08:07 10
Лучший ответ Сообщение было отмечено как решение

Решение

Сделано в VBA, правда
Но S As Range(= Selection) по сути тот же самый массив, что и S(1 to N,1 to N)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub main()
Dim S As Range, N%, C%, R%, I%, J%, dC%, dR%
Set S = Selection: S.ClearContents
N = S.Columns.Count
C = 1: R = 1: J = 1: S(1, 1) = 1
For I = 1 To 2 * N - 1
  dC = (2 - I Mod 4) Mod 2
  dR = (2 - (I - 1) Mod 4) Mod 2
  Do
    If C + dC > N Or C + dC < 1 Then Exit Do
    If R + dR > N Or R + dR < 1 Then Exit Do
    If S(R + dR, C + dC) Then Exit Do
    C = C + dC
    R = R + dR
    J = J + 1
    S(R, C) = J
  Loop
Next I
End Sub
3
Миниатюры
Заполнить массив последовательными натуральными числами, идущими по спирали  
11.11.2011, 08:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2011, 08:07

Нужно заполнить массив 10 случайными числами и построить график
Заполните массив десятью случайными целыми числами, каждое из которых лежит в...

Дан массив размера N. Заполнить его случайными числами
Здравствуйте=))) Помоги пожалуйста решить задачки, я совсем Visual Basic не...

Заполнить массив десятью случайными числами и вычислить их среднее арифметическое
1. Создать проект, который заполняет массив десятью случайными числами и...


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

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

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