Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
3 / 2 / 2
Регистрация: 09.09.2012
Сообщений: 25

Сформировать из двумерного массива одномерный в форме спирали

06.12.2013, 16:22. Показов 2764. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан двумерный массив, сделать из него одномерный массив в форме спирали
дан например:
1 2 3
4 5 6
7 8 9
получится должно:
1 2 3 6 9 8 7 4 5
должно работать для любой размерности.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.12.2013, 16:22
Ответы с готовыми решениями:

Из двумерного массива сформировать одномерный
Дан двумерный массив размерностью 65, заполненный целыми числами с клавиатуры. Сформировать одномерный массив, каждый элемент которого...

Из двумерного массива сформировать одномерный
12. дан двумерный массив целых чисел. Сформировать одномерный массив.

Из двумерного массива сформировать одномерный
Из двумерного массива сформировать одномерный массив, каждый элемент которого является выбранным из соответствующей строки двумерного...

13
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
06.12.2013, 23:40
Лучший ответ Сообщение было отмечено как решение

Решение

Задачка заинтересовала, вот что получилось:
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
Sub SpiraleArray()
    Dim I%, R%, C% 'ñ÷¸ò÷èê è òåêóùèå êîîðäèíàòû â ìàññèâå
    Dim cR%, cC% 'ê-âî ñòðîê è ñòîëáöîâ ìàññèâà
    Dim dR%, dC 'ïðèðàùåíèÿ ïî ñòðîêàì è ñòîëáöàì ñ ó÷¸òîì ê-âà ïîâîðîòîâ
    Dim P% 'ñ÷¸ò÷èê ïîâîðîòîâ
    Dim a2(), b1()
    Cells.ClearContents 'î÷èñòêà ïîëÿ
     
    cR = InputBox("Ñòðîê?") 'çàäà¸ì ðàçìåðû
    cC = InputBox("Ñòîëáöîâ?") 'ìàññèâà
    ReDim a2(1 To cR, 1 To cC)
    ReDim b1(1 To cR * cC)
    'çàïîëíèòü äâóõìåðíûé ìàññèâ
    For R = 1 To cR
        For C = 1 To cC
            a2(R, C) = Int(100 * Rnd) + 1
        Next
    Next
    Cells(1, 1).Resize(cR, cC) = a2
    'çàïîëíèòü îäíîìåðíûé ìàññèâ ïî ñïèðàëè
    R = 1: C = 1 'íà÷àëüíûå êîîðäèíàòû
    dC = 1: dR = 0 'íà÷àëüíûå ïðèðàùåíèÿ
    For I = 1 To cR * cC 'öèêë ïî âñåì ÿ÷åéêàì ìàññèâà
        b1(I) = a2(R, C)
        a2(R, C) = 0 'äëÿ êîíòðîëÿ çàíåñåíèÿ â ìàññèâ b1
        If R + dR > cR Or R + dR < 1 Or C + dC > cC Or C + dC < 1 Then
            P = P + 1 'ñëåäóþùèì õîäîì âûïàäàåì èç ìàññèâà->ïîâîðà÷èâàåì
        ElseIf a2(R + dR, C + dC) = 0 Then
            P = P + 1 'ñëåäóþùèì õîäîì ïîïàäàåì â îáíóëåííîå çíà÷åíèå->ïîâîðà÷èâàåì
        End If
        dC = (2 - (P + 1) Mod 4) Mod 2 'ïåðåñ÷èòûâàåì ïðèðàùåíèÿ
        dR = (2 - P Mod 4) Mod 2 'ñ ó÷¸òîì ê-âà ïîâîðîòîâ
        C = C + dC 'íîâûå
        R = R + dR 'êîîðäèíàòû
    Next I
    Cells(cR + 2, 1).Resize(1, UBound(b1)) = b1
End Sub
3
3 / 2 / 2
Регистрация: 09.09.2012
Сообщений: 25
07.12.2013, 22:29  [ТС]
тут тоже пожалуйста если можно для экселевского вба
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
07.12.2013, 22:41
Цитата Сообщение от goodforce Посмотреть сообщение
тут тоже пожалуйста если можно для экселевского вба
А тут какой?
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
07.12.2013, 22:51
Лучший ответ Сообщение было отмечено как решение

Решение

Ну это вообще беда. Вырождаемся! Пашешь-пашешь, стараешься, а тут такое!!!
3
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
08.12.2013, 00:48
То ли ещё будет!
0
3 / 2 / 2
Регистрация: 09.09.2012
Сообщений: 25
09.12.2013, 07:40  [ТС]
извените пожалуйста я особо не понимаю в вба и не хотел вас обидеть, спасибо большое за помощь!
1
3 / 2 / 2
Регистрация: 09.09.2012
Сообщений: 25
13.12.2013, 18:19  [ТС]
извените но программа запрашивает кол-во строк и столбцов и больше ниче не делает не выводит.
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
13.12.2013, 18:24
Надеюсь вы запускаете из Excel!
0
3 / 2 / 2
Регистрация: 09.09.2012
Сообщений: 25
13.12.2013, 18:36  [ТС]
да через modul

Добавлено через 2 минуты
и через code тоже самое

Добавлено через 2 минуты
а все я увидел где выводится спасибо
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
13.12.2013, 18:37
Выложите файл, так легче разобраться.
0
3 / 2 / 2
Регистрация: 09.09.2012
Сообщений: 25
16.12.2013, 14:56  [ТС]
Уважаемые друзья, если можно то переделайте код для формы пожалуйста.
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
30.01.2014, 12:58
Просто было интересно (с визуализацией перевода из спирали -выделено по цветам):
Вложения
Тип файла: xls Двухмерный массив в одноменрный по спирали.xls (72.0 Кб, 32 просмотров)
1
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 21
22.12.2015, 07:20
кто-нибудь сможет написать это же задание только на делфи с использованием stringrid: help:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.12.2015, 07:20
Помогаю со студенческими работами здесь

С двумерного массива сформировать одномерный массив
С данного двумерного массива целых чисел сформировать одномерный массив, каждый элемент которого равняется первому элементу...

Из двумерного массива сформировать одномерный массив
Из двумерного массива n на n сформировать одномерный массив из минимальных элементов, расположенных в столбце

Сформировать одномерный массив из элементов двумерного массива
Здравствуйте!! Помогите, пожалуйста, решить задачку по лабе: Дан двумерный целочисленный массив размерностью n*n. Сформировать...

Из двумерного массива сформировать одномерный массив по заданному правилу
По заданной вещественной матрице А получить массив B, присвоив его i-у элементу значение 0, если все элементы i-й строки матрицы A...

Сформировать из элементов двумерного массива, кратных четырем, одномерный массив
написать процедуру, в которой сформировать из элементов двумерного массива кратных четырем одномерный массив begin b:=n*m; ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru