Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [VB6] [Алгоритм] Проход массива в VB6, Дан двумерный массив целых чисел А[1..N, 
:(
    Опции темы
SuperDrakon
Дата 1.1.2014, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 1.1.2014

Репутация: нет
Всего: нет



Дан двумерный массив целых чисел А[1..N,1..N]. Сформируйте линейный массив В[1..N*N], получающийся при чтении данного массива так, как показано на рисунке:
http://savepic.net/4189704.htm

пример программы
http://savepic.net/4129289.htm

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  пример.rar 54,21 Kb
PM MAIL   Вверх
SuperDrakon
Дата 1.1.2014, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 1.1.2014

Репутация: нет
Всего: нет



что есть. внешне по другому от моего примера(

Код

Const n = 7 ' размерность матрицы
Dim Matrix(1 To n, 1 To n) As Integer 'описание матрицы
Dim Arr(1 To n * n) As Integer 'описание массива
Private Sub CreateArrayByMatrix(Matrix, Arr) 'процедура заполнения массива по матрице
    Dim i, j, index As Integer 'i,j - индексы для матрицы, index - текущий номер элемента массива
    index = 1 'инициализация индекса для массва
    For j = n To n \ 2 Step -1 'не далее половины размерности
        For i = j To n - j + 1 Step -1 'заполнение вертикальной правой части
            Arr(index) = Matrix(i, j) 'записываем в очередной элемент массива элемент матрицы
            index = index + 1 'переходим к следующему элементу
        Next i
        For i = j - 1 To n - j + 1 Step -1 'заполнение верхней горизонтальной части
            Arr(index) = Matrix(n - j + 1, i)
            index = index + 1
        Next i
        For i = n - j + 2 To j 'заполнение вертикальной левой части
            Arr(index) = Matrix(i, n - j + 1)
            index = index + 1
        Next i
        For i = n - j + 2 To j - 1 'заполнение нижней горизонтальной части
            Arr(index) = Matrix(j, i)
            index = index + 1
        Next i
    Next j
End Sub
Private Sub CreateMatrix(ByRef Matrix) 'для проверки процедура создания матрицы по вышеописанному алгоритму
    Dim i, j, index As Integer
    index = 1
    For j = n To n \ 2 + 1 Step -1
        For i = j To n - j + 1 Step -1
            Matrix(i, j) = index
            index = index + 1
        Next i
        For i = j - 1 To n - j + 1 Step -1
            Matrix(n - j + 1, i) = index
            index = index + 1
        Next i
        For i = n - j + 2 To j
            Matrix(i, n - j + 1) = index
            index = index + 1
        Next i
        For i = n - j + 2 To j - 1
            Matrix(j, i) = index
            index = index + 1
        Next i
    Next j
End Sub
Private Sub CreateRandomMatrix(ByRef Matrix) 'заполнение матрицы случайными значениями
    Dim i, j As Integer 'индексы
    For i = 1 To n
        For j = 1 To n
            Matrix(i, j) = Int(Rnd * 10) ' От 0 до 9
        Next j
    Next i
End Sub
Private Sub cmdCreateArray_Click()
    Dim i, j As Integer 'индексы
    Dim strTemp As String 'строка - используется для выравнивания элементов матрицы
    txtOut.Text = "" 'clear
    CreateRandomMatrix Matrix 'заполняем матрицу случайными значениями
    'печатаем матрицу
    txtOut.Text = "Исходная матрица:" & Chr(13) & Chr(10)
    For i = 1 To n
        For j = 1 To n
            strTemp = Matrix(i, j)
            Do While Len(strTemp) < 3 'печатаем по 3 символа на элемент
                strTemp = " " & strTemp 'сдвигаем к правому краю
            Loop
            txtOut.Text = txtOut.Text & strTemp 'печатаем по 3 символа на элемент
        Next j
        txtOut.Text = txtOut.Text & Chr(13) & Chr(10) 'переход на следующую строку
    Next i
    CreateArrayByMatrix Matrix, Arr 'заполняем массив по матрице
    'печатаем результирующий массив
    txtOut.Text = txtOut.Text & "Массив-результат:" & Chr(13) & Chr(10)
    For i = 1 To n * n
        txtOut.Text = txtOut.Text & Arr(i) & " "
    Next i
    txtOut.Text = txtOut.Text & Chr(13) & Chr(10)
    txtOut.Text = txtOut.Text & Chr(13) & Chr(10)
    CreateMatrix Matrix 'заполняем матрицу
    'печатаем матрицу
    txtOut.Text = txtOut.Text & "Исходная матрица:" & Chr(13) & Chr(10)
    For i = 1 To n
        For j = 1 To n
            strTemp = Matrix(i, j)
            Do While Len(strTemp) < 3 'печатаем по 3 символа на элемент
                strTemp = " " & strTemp 'сдвигаем к правому краю
            Loop
            txtOut.Text = txtOut.Text & strTemp 'печатаем по 3 символа на элемент
        Next j
        txtOut.Text = txtOut.Text & Chr(13) & Chr(10) 'переход на следующую строку
    Next i
    CreateArrayByMatrix Matrix, Arr 'заполняем массив по матрице
    'печатаем результирующий массив
    txtOut.Text = txtOut.Text & "Массив-результат:" & Chr(13) & Chr(10)
    For i = 1 To n * n
        txtOut.Text = txtOut.Text & Arr(i) & " "
    Next i
End Sub

Private Sub Form_Load()
    Randomize 'инициализация генератора случайных чисел
End Sub



Присоединённый файл ( Кол-во скачиваний: 0 )
Присоединённый файл  Array.zip 2,21 Kb
PM MAIL   Вверх
Akina
Дата 1.1.2014, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 453



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1273 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.