Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В QB отсутствуют операции обработки массивов в целом. Для выполнения операции над массивом необходимо перечислить операции, выполняемые над каждым его элементом.
Элементы массивов получают значения с помощью операторов ввода или присваивания, как простые переменные.
· Заполнение с клавиатуры
DIM A (1 to 25) FOR i=1 TO 25 PRINT “Введите ”; i; “элементмассиваА” INPUT A(i) NEXT i |
· Заполнение с использованием операторов DATA и READ:
DATA 20, 30, 40, 50, 80, 90, 12, 45, 33, 8, 27, 44 DIM B%(1 to 12) FOR i=1 TO 12 READ B%(i) NEXTi |
· Заполнение с помощью оператора присваивания с использованием стандартных функций:
Option Base 1 DIM C(100) as single FOR i=1 TO 100 C(i)=RND(1) NEXTi |
Выполнение приведенной программы несколько раз приводит к получению одной и той же последовательности чисел, которая была раньше, т.е. функция RND генерирует псевдослучайные числа.
Поэтому перед использованием функции RND в программе необходимо случайным образом определить место в этой последовательности, начиная с которого будут выбираться эти числа. Для этой цели используется оператор рандомизации.
Randomize [m%] |
где m% - число, используемое для запуска генератора случайных чисел.
Оператор Randomizeнужно помещать в начале программы. Если аргумент опущен, то на экран выдается сообщение для ввода любого числа (-32768 to 32767).
Для обеспечения истинной случайности необходимо, чтобы это число при каждом запуске программы было разным. Для этого используется встроенный счетчик времени – функция Timer. Эта функция не имеет аргументов ивозвращает текущее значение времени в секундах с точностью 0,01 сек.Поэтому оператор рандомизации будет иметь следующий вид:RandomizeTimer
Для получения случайного числа из диапазона [a, b] с равномерным законом распределения используется формула:
x=Rnd*(b-a+1)+a
Окончательно программа по заполнению одномерного массива случайными целыми числами из диапазона [a, b] выглядит так:
Dim C(1 to 25) as Integer, i as Integer Input “a=”,a Input “b=”,b Randomize Timer For i=1 to 25 C(i)=Int(Rnd*(b-a+1)+a) Next i |
Для заполнения двумерного массива необходимо организовать вложенные циклы. Например, внешний по номеру строки, а внутренний по номеру столбца:
DIM C(1 to 5,1 to 3) FOR i=1 TO 5 FOR j=1 TO 3 INPUT C(I,J) NEXT j NEXT i | Dim C(1 to 5, 1 to 3) as Integer Input “a=”,a Input “b=”,b Randomize Timer FOR i=1 to 5 FOR j=1 to 3 C(i,j)=Int(Rnd*(b-a+1)+a) NEXT j NEXT i |
Дата публикования: 2015-09-17; Прочитано: 229 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!