22 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 456
1

Как передавать в аргумент функции массив, и можно ли возвращать его из функции?

12.03.2019, 12:46. Показов 3189. Ответов 14

привет друзья!

можно ли в VB 6.0 передавать в аргумент функции массив
и можно ли возвращать его из функции?
хотя бы коротенький пример как это делать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2019, 12:46
Ответы с готовыми решениями:

Что оптимальнее: передавать матрицу как аргумент, или же формировать её внутри функции?
Добрый вечер, уважаемые форумчане! Я столкнулась с таким вопросом в процессе оптимизации моей...

Передавать при создании класса, переменную - аргумент функции
1. Вопрос Конструктор класса - метод: CustomGLWidget::CustomGLWidget(QWidget...

Изменить программу вывода функции так, чтобы можно было передавать функции типа double
Помогите разобраться. Изменить программу вывода функции так, чтобы можно было передавать функции...

PostDelayed можно ли в Runnable передавать аргумент, как-то так?
Добрый день, форумчане гуру и прочие знающие люди! Помогите начинающему программеру! Есть метод...

14
15134 / 6408 / 1730
Регистрация: 24.09.2011
Сообщений: 9,999
12.03.2019, 13:15 2
Лучший ответ Сообщение было отмечено Веди как решение

Решение

Веди, можно: Добавить (удалить) 1 элемент с конца массива
еще примеры можно поискать так: https://www.google.com/search?q=function+"as+double%28%29"+site%3Acyberfo rum.ru%2Fvisual-basic
1
22 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 456
12.03.2019, 13:59  [ТС] 3
спасибо
годнота!

Добавлено через 38 минут
для примера тиснул кусочек кода
это правильно что массивам принимающим значения
и возвращаемым не указывают скобки?
может что-то неверно
проверьте пожалуйста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim arr1(1, 1) As Integer
arr1 = Test1(10)
 
Private Function Test1(x)
   Dim arr2(1, 1) As Integer
   s = x
   For i = 0 to 1
      For j = 0 to 1
         arr2(i, j) = s
         s = s + 1
      Next j
   Next i
   PushBack = Arr2
End Function
0
es geht mir gut
11264 / 4746 / 1183
Регистрация: 27.07.2011
Сообщений: 11,437
12.03.2019, 14:03 4
Цитата Сообщение от Веди Посмотреть сообщение
может что-то неверно
У Вас функция ничего не возвращает.
0
22 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 456
12.03.2019, 14:10  [ТС] 5
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim arr1(1, 1) As Integer
arr1 = Test1(10)
 
Private Function Test1(x)
   Dim arr2(1, 1) As Integer
   s = x
   For i = 0 to 1
      For j = 0 to 1
         arr2(i, j) = s
         s = s + 1
      Next j
   Next i
   Test1= Arr2
End Function
точно. поправил
и вопрос. самой функции надо приписывать возвращаемый тип?
Private Function Test1(x) As Integer
или это само подразумевается?
0
es geht mir gut
11264 / 4746 / 1183
Регистрация: 27.07.2011
Сообщений: 11,437
12.03.2019, 14:13 6
Цитата Сообщение от Веди Посмотреть сообщение
надо приписывать возвращаемый тип?
Дело вкуса. Вон у Вас половина переменных не объявлена - и всё норм, до поры до времени
0
22 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 456
12.03.2019, 14:26  [ТС] 7
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim arr1(1, 1) As Integer
arr1 = Test1 10
 
Private Function Test1(x As Integer) As Integer
   Dim arr2(1, 1) As Integer
   Dim s, i, j As Integer
   s = x
   For i = 0 to 1
      For j = 0 to 1
         arr2(i, j) = s
         s = s + 1
      Next j
   Next i
   Test1= Arr2
End Function
так лучше
или правильнее?
внутри скобок Dim не нужен?
0
es geht mir gut
11264 / 4746 / 1183
Регистрация: 27.07.2011
Сообщений: 11,437
12.03.2019, 14:31 8
Лучший ответ Сообщение было отмечено Веди как решение

Решение

Два варианта. Процедура и функция.
Как передавать в аргумент функции массив, и можно ли возвращать его из функции?
1
4038 / 1423 / 394
Регистрация: 07.08.2013
Сообщений: 3,541
12.03.2019, 16:43 9
Цитата Сообщение от Веди Посмотреть сообщение
Dim s, i, j As Integer
ну как бы не совсем правильно
переменные s,i объявлены как вариант
0
22 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 456
12.03.2019, 17:50  [ТС] 10
странное дело вроде всё как у вас но выдаёт ошибку:
Can't assign to array
ругается на arr1
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Option Explicit
 
Private Sub Command1_Click()
   Dim arr1(1, 1) As Integer
   arr1 = Test1(1)
End Sub
 
Private Function Test1(ByVal x As Integer) As Integer()
   Dim arr2(1, 1) As Integer
   Dim s As Integer, i As Integer, j As Integer
   s = x
   For i = 0 To 1
      For j = 0 To 1
         arr2(i, j) = s
         s = s + 1
      Next j
   Next i
   Test1 = arr2
End Function
что не так делаю?

Добавлено через 25 минут
такой код вроде бы решает проблему
но надо проверять. попробую значения вывести
Visual Basic
1
2
Dim arr1 As Variant
arr1 = Test1(1)
0
es geht mir gut
11264 / 4746 / 1183
Регистрация: 27.07.2011
Сообщений: 11,437
12.03.2019, 17:51 11
Цитата Сообщение от Веди Посмотреть сообщение
Dim arr1(1, 1) As Integer
Visual Basic
1
Dim arr1
1
22 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 456
12.03.2019, 18:22  [ТС] 12
да я понял свою ошибку
пытаюсь распечатать результат
не пойму как это сделать?

Добавлено через 8 минут
пришлось массив глобальным делать
но зато заработало
мож как-то иначе можно?
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
Option Explicit
Public arr1
 
Private Sub Form_Load()
   arr1 = Test1(1)
End Sub
 
Private Sub Command1_Click()
   Dim i As Integer, j As Integer
   For i = 0 To 1
      For j = 0 To 1
         g.Print arr1(i, j)
      Next j
   Next i
End Sub
 
Private Function Test1(ByVal x As Integer) As Integer()
   Dim arr2(1, 1) As Integer
   Dim s As Integer, i As Integer, j As Integer
   s = x
   For i = 0 To 1
      For j = 0 To 1
         arr2(i, j) = s
         s = s + 1
      Next j
   Next i
   Test1 = arr2
End Function
0
es geht mir gut
11264 / 4746 / 1183
Регистрация: 27.07.2011
Сообщений: 11,437
12.03.2019, 20:04 13
Лучший ответ Сообщение было отмечено Веди как решение

Решение

Цитата Сообщение от Веди Посмотреть сообщение
мож как-то иначе можно?
Убрать arr1 = Test1(1) из Form_Load и вставить вместе с объявлением массива в Command1_Click
1
22 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 456
14.03.2019, 18:55  [ТС] 14
пишу сюда ибо по сабжу.
если есть функция
Visual Basic
1
2
3
4
5
6
7
8
9
Private Function Init(ByVal nc As Integer) As Integer()
   ReDim arr(1) As Integer
   ...
   ...
   Init = arr
   ...
   ...
   Init = arr
End Function
возврат функции "Init = arr" является выходом из функции
или в первом возврате надо сделать принудительный выход?
0
es geht mir gut
11264 / 4746 / 1183
Регистрация: 27.07.2011
Сообщений: 11,437
14.03.2019, 19:32 15
Цитата Сообщение от Веди Посмотреть сообщение
первом возврате надо сделать принудительный выход?
Да.

Добавлено через 40 секунд
Цитата Сообщение от Веди Посмотреть сообщение
возврат функции "Init = arr" является выходом из функции
Нет
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2019, 19:32
Помогаю со студенческими работами здесь

Зачем нужно окаймлять аргумент функции return, что будет возвращать данный оператор, если не использовать скобки?
Очередной привет программистам форума, в процессе работы над своим заданием столкнулся с таким...

Можно ли передать функцию как аргумент другой функции?
mojno li v iazike C peredati functiiu kak argument drugoi functii. sori za angl. bukvi. mersi.

Можно ли как-нибудь передавать функцию в аргумент сразу со своим аргументом?
День добрый. Изучаю Си в качестве хобби, что-ли. Уровень владения на данный моменет - написание...

Массив как аргумент функции
Есть желание передавать массив символов как аргумент функции управляющей еще чем то. Нерабочий...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru