Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Запись в массив случайных значений


Автор: Igor Graf 25.3.2006, 07:29
Привет всем! Долго я не не заглядывал)

В общем у меня возникла одна проблемка .

Есть массив , в который я записываю числа , например от 1 до 10 , выбранные случайным образом, моя задача сделать так, чтобы при записи в массив программа сперва провряла нет ли в массиве числа , которое я на данный момент записываю и если таковое есть то заново выбираем число от 1 до 10, и так пока весь массив не заполнится.
Ясно что тут необходимо сделать цикл , а вот как,я не могу сообразить как это можно осуществит , помогите пожалуйста!
Заранее благодарен !

Автор: 85jura85 25.3.2006, 08:50
Сильно с VB не знаком, но вроде так
Код

mas[1]=rnd(1)*10

for i=2 to 10
  k=0
 mas[i]=rnd(1)*10
  for j=1 to i-1
    if mas[i]<>mas[j] then k=k+1
   next j

if k<>i-1 then i=i-1

next i

Модератор: Пользуйтесь тегами "код"!

Автор: Тутанхамец 25.3.2006, 09:00
Код

Private Sub Command1_Click()

Dim a(1 To 10) As Integer
Dim i As Long, j As Long, r As Long, b As Boolean
Randomize Timer

For i = 1 To 10
    Do
        r = Rnd * 9 + 1
        b = False
        For j = 1 To i - 1
            If a(j) = r Then
                b = True
                Exit For
            End If
        Next j
    Loop While b
    a(i) = r
Next i

For i = 1 To 10
List1.AddItem CStr(a(i))
Next i


End Sub


Обрати внимание на два момента:

1) Если размер массива больше, чем интервал случайных чисел, то прога впадает в бесконечный цикл. Чисел не хватает.

2) Если среди случайных чисел, которые ты будешь засовывать в массив, должны быть нули, учти, что при объявлении массива он УЖЕ проинициализирован нулями. В этом случае забей его числами, которых нет в твоём интервале случайных (-1, скажем).
Добавлено @ 09:13
Хотя прошу прощения, в твоем случае второй момент, пожалуй, помехой не будет smile

Автор: Igor Graf 25.3.2006, 09:23
Спасибо большое !

число элементов массива совпадает с кол - вом чисел на интервале)
второй момент - нулей не будет
еще раз спасибо все довольно подробно , попробую поэксперементировать!

С уважением.....

Автор: cardinal 25.3.2006, 14:44
Тут еще советую почитать...
http://vingrad.ru/VB-VB-002236

Автор: ~FoX~ 27.3.2006, 12:40
А я бы забил массив подряд, а потом просто случайным образом элементы местами поменял, ИМХО так проще будет и не придется много раз генерить рандом.

Автор: cardinal 27.3.2006, 12:58
Проблема возникает тогда, когда надо записать случайные числа от например 10 до 50 в массив размером 8...

Автор: Igor Graf 27.3.2006, 22:52
Всем спасибо большое мне помог совет
Тутанхамец, ему отдельное спасибо! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)