Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / массив уникальных значений / 6 сообщений из 6, страница 1 из 1
09.01.2006, 00:04:25
    #33472158
Студент13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массив уникальных значений
народ! помогите! мне нужно создать массив интов так что бы значения не повторялись.если значение повторяется сгенерировать его заново. но при этом значения добавляемые в массив генерируются в рандоме. подскажите как это сделать.
...
Рейтинг: 0 / 0
09.01.2006, 00:38:01
    #33472176
S.A.N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массив уникальных значений
А массив большой?
Если нет, то можно до вставки в массив организовать проверку на ниличие в нем вставляемой записи.
Если массив большой, то можно попробовать создать заведомо больший массив чем необходимый, исключить из него повторения и пергнать в требуемый.
...
Рейтинг: 0 / 0
10.01.2006, 09:36:59
    #33473400
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массив уникальных значений
Я бы для этого использовал коллекцию. Ничего перебирать не надо, а уникальность ключа проверяется автоматически.
...
Рейтинг: 0 / 0
10.01.2006, 09:52:00
    #33473436
массив уникальных значений
Как-нибудь так:

Код: plaintext
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.
Sub UniqueArray()
    
    Dim aintData() As Integer
    Dim intValue As Integer
    Dim intI As Integer
    Dim intJ As Integer
    Dim blnFlag As Boolean
        
    For intI =  1  To  10 
        Randomize
        ReDim Preserve aintData( 1  To intI)
Mark:
        blnFlag = False
        intValue = Int(( 10  * Rnd) +  1 )
        
        For intJ = LBound(aintData) To UBound(aintData) -  1 
            If aintData(intJ) = intValue Then
                blnFlag = True
                Exit For
            End If
        Next intJ
        
        If Not blnFlag Then
            aintData(intI) = intValue
            Debug.Print aintData(intI)
        Else
            GoTo Mark
        End If
    Next intI
End Sub
...
Рейтинг: 0 / 0
10.01.2006, 10:51:00
    #33473562
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массив уникальных значений
Приношу свои извинения Пользователь2
А не лучше было бы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
       EndMas =  10  
       ReDim Preserve aintData(EndMas)
       For intI =  1  To EndMass
        Randomize
...
        For intJ = LBound(aintData) To EndMas  -  1 
...
       
Не изминяя вашу идею увиличиваем на порядок производительность алгоритма
...
Рейтинг: 0 / 0
10.01.2006, 12:45:24
    #33473948
массив уникальных значений
To SmeL_md:

Да, конечно. Тогда уж без Preserve.

На самом деле я бы тоже воспользовался коллекцией.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / массив уникальных значений / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]