Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как передать функции двумерный массив? Добавлено: 15.07.03 11:51  

Автор вопроса:  Chill | ICQ: 554200 

Как реальзовать сабж???

С одномерным все просо и понятно, а как передавать многомерный (мне нужен двухмерный) массив в функцию? Причем размер массива заранее не известен.

Плз. помогите, очень нада, трабла на работе....

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Snake



ICQ: 302130238 

Вопросов: 16
Ответов: 39
 Профиль | | #1 Добавлено: 15.07.03 14:35

Если размерность зараннее не известна, то ты Redim шспользуешь гдето? Если так то вот... работает

Private Sub Command1_Click()
  Dim matrix As Variant
  ReDim matrix(3, 4)
  matrix(0, 1) = 11
  matrix(0, 2) = 12
  matrix(1, 1) = 21
  matrix(1, 2) = 22
  Call farr(matrix)
  matrix = fmatrix(matrix)
End Sub

Public Sub farr(matrix)
  matrix(0, 0) = 10 + matrix(0, 1)
End Sub

Public Function fmatrix(matrix)
  matrix(0, 0) = matrix(0, 0)  + matrix(0, 1) * 5
fmatrix = matrix
End Function

Ответить

Номер ответа: 2
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #2 Добавлено: 15.07.03 17:19

А как в таком случае контролировать выход за рамки массива??

У мя в функции внутри цикла заполнение идет. В принципе можно передавать размер массива в функцию в качестве параметров, но хотелось бы, что-нибудь поизящнее =)

Ответить

Номер ответа: 3
Автор ответа:
 USA



Вопросов: 1
Ответов: 184
 Профиль | | #3 Добавлено: 16.07.03 01:17

Передавай ссылку типа Variant на массив типа Variant.

В примере можно добавлять сколько угодно уровней в массив.

Public Sub Sample()

Dim v As Variant

FillArray v

FillArray v(0)

FillArray v(0)(0)

End Sub

Private Sub FillArray(ByRef Arg As Variant)

Dim a(1) As Variant

Static i As Integer

a(0) = "Строка " & CStr(i)

i = i + 1

a(1) = "Строка " & CStr(i)

i = i + 1

Arg = a

End Sub

Может моможет.

Ответить

Номер ответа: 4
Автор ответа:
 S_Serg



Вопросов: 9
Ответов: 25
 Профиль | | #4 Добавлено: 16.07.03 02:59

Просто описываешь параметр подпрограммы, которая обрабатывает массив, как динамический массив:

private sub main()

dim m() as integer

redim m(0 to 9, 0 to 9)

call fillMatr(m)

end sub

private sub fillMatr(m() as integer)

dim i as integer, j as integer

for i =0 to 9

for j =0 to 9

m(i, j) =0

next j

next i

end sub

Ответить

Номер ответа: 5
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #5 Добавлено: 16.07.03 13:39

О ссылка, понятно, в Си так же передаются динамические массивы в функцию, спасибо, я как-то сразу не подумал =)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам