Другие языки программирования и технологии

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

. я сделала, но не уверена чт правильно..нужно чтоб программа смотрела является ли множество подмножеством дркгогоFunction Pere(a() As Integer, b() As Integer) As VariantDim i As Integer, j As Integer, n As Integer, c() As Integer ReDim c(UBound(a)) n = 0 For i = 1 To UBound(a)For j = 1 To UBound(b) If a(i) = b(j) Then n = n + 1 c(n) = a(i) MsgBox "да" Else MsgBox "нет" End If Next i Next j ReDim Preserve c(n) Pere = cEnd Function
Насчёт месседжбоксов - полностью согласен с предыдущим оратором: запускать их из цикла - ацтой.
Условия неплохо бы сформулировать получше, потому как из вопроса даже неясно какой массив представляет множество, а какой подмножество, имена a и b тоже ни о чём не говорят.
ИМХО - если функция проверяет условие, то она должна возвращать булеву величину (True или False). А о чём говорит новый массив? Кроме того: при создании массива типа интегер его элементам присваивается значение 0 (это так - для справки) и какую интересно информацию можно получить из массива некоторые элементы которого 0 а другие - нет?

Предлагаю следующее решение:

Создаём вспомогательную функцию, которая проверяет содержит ли массив заданное число

Function Contains(testArray() As Integer, testInt As Integer) As Boolean
Dim i As Integer
For Each i In testArray
If testInt = i Then
Contains = True
End Function
End If
Next
Contains = False
End Function

далее основная функция будет возвращать True если числа второго массива являются подмножеством первого

Function IsSubSet(quantity() As Integer, subSet() As Integer) As Boolean
Dim i As Integer
For Each i In subSet
If Not Contains(quantity, i) Then
IsSubSet = False
End Function
End If
Next
IsSubSet = True
End Function

В деле функции не проверял, но вроде всё должно работать.
Stiopa Savvidis
Stiopa Savvidis
4 394
Лучший ответ
Доброго времени суток.

Что-то во мне сопротивляется такому решению. Смотрите, вы на каждое сравнение выводите мессаджбокс. Не многовато? Если их размерности будут хотя бы 10, то это уже 100. Устанет юзер нажимать на Ок. Наверное делать вывод о вхождении одного множества в другое надо отдельно, а уж потом один раз вывести результат работы.

Удачи!