Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Massivi.doc
Скачиваний:
5
Добавлен:
26.08.2019
Размер:
86.53 Кб
Скачать

Ввод массива с использованием типизированной константы-массива

Вторым способом ввода начальных значений элементов массивов является использование типизированных констант - массивов.

Их описание имеет вид:

TYPE <имя типа массива>=ARRAY[<тип индекса в случае одномерного массива, иначе типы индексов через запятую>]OF <тип элементов массива>;

CONST <имя типизированной константы-массива>:<имя типа массива>= (<множество констант>);

где множество констант в случае одномерного массива - значения элементов массива через запятую,

в случае двухмерного массива - (<значения элементов первой строки двухмерного массива через запятую>),(<значения элементов второй строки через запятую>),...,(<значения элементов последней строки массива через запятую>)

В случае многомерных констант-массивов множество констант, соответствующих каждому измерению, заключается в дополнительные круглые скобки и отделяется от соседнего множества запятой. В результате образуются вложенные структуры множеств, причем глубина вложения должна соответствовать размерности массива.

Пример об явления типизированных констант-массивов:

TYPE VEC=ARRAY[1..5]OF REAL;

MTR=ARRAY[1..3,1..2]OF SHORTINT;

CUBE=ARRAY[1..2,1..2,1..3]OF BYTE;

CONST V:VEC=(1.2,3.4,5.5,-7.3e-5,9);

M:MTR=((-1,2),(3,4),(5,-6));

C:CUBE=(((1,2,3),(4,5,6)),((7,8,9),(10,11,12)));

Типизированные константы могут быть описаны без использования раздела TYPE следующим образом:

CONST <имя типизированной константы-массива>:ARRAY[<тип индекса в случае одномерного массива, иначе типы индексов через запятую>]OF <тип элементов массива>=(<множество констант>);

Например

CONST V:ARRAY[1..5]OF REAL=(1.2,3.4,5.5,-7.3e-5,9);

Типизированные константы фактически представляют собой переменные с заданными в их описании начальными значениями и могут использоваться наравне с обычными переменными, в том числе менять свои значения, находясь в левой части оператора присваивания. Например, после указанных описаний в разделе операторов программы может быть

V[1]:=10.5;

Ввод массива с помощью генератора псевдослучайных чисел

В качестве элементов массивов могут быть псевдослучайные числа, равномерно распределенные на заданном отрезке. Тогда вместо использования входного файла и операторов READ и READLN или типизированной константы-массива применяется стандартная функция RANDOM.

Функция RANDOM без параметра формирует случайное число X вещественного типа в пределах [0.0,1.0), т.е. 0.0 X < 1.0, а RANDOM(N) при условии, что N - целое типа WORD или BYTE, формирует целое число X типа WORD или BYTE в пределах [0,N), т.е. 0 X N-1.

Перед первым обращением в программе к функции RANDOM для инициализации программы-генератора псевдослучайных чисел (присвоения его переменной начального значения в зависимости от показания компьютерных часов) следует вызвать стандартную процедуру RANDOMIZE;

Пример программы с вводом одномерного массива с помощью генератора псевдослучайных чисел.

VAR SL:ARRAY[1..5] OF REAL; I:BYTE;

BEGIN

RANDOMIZE;

FOR I:=1 TO 5 DO

BEGIN

SL[I]:=RANDOM;

WRITE(SL[I]:5:2)

END;

WRITELN

END.

В результате выполнения данной программы на экране монитора появится строка с пятью вещественными числами в пределах [0.0,1.0), например

0.61 0.99 0.44 0.75 0.18

При каждом новом запуске программы на выполнение будут получаться новые значения вещественных чисел в пределах [0.0,1.0), так как значения зависят от текущего времени на компьютерных часах.

Для получения псевдослучайного дробного числа, равномерно распределенного в диапазоне [a;b) надо вместо RANDOM использовать A+(B-A)*RANDOM.

(B-A) заменяют на вычисленное значение без круглых скобок. Например, чтобы получить вещественное псевдослучайное число в пределах [-1.0,4.0) надо вместо RANDOM использовать -1+5*RANDOM.

Для получения псевдослучайного целого числа, равномерно распределенного в диапазоне [a;b] надо вместо RANDOM использовать A+RANDOM(B-A+1).

B-A+1 заменяют на вычисленное значение, круглые скобки после RANDOM необходимы, так как в случае целых чисел используется RANDOM с параметром. Например, для получения целого псевдослучайного числа в пределах [-1,4] надо использовать -1+RANDOM(6).

Пример программы с вводом элементов двухмерного массива в виде

псевдослучайных целых чисел от -15 до 15 и выводом массива в файл.

VAR I,J: byte; OUT:TEXT;L:ARRAY[1..3,1..2] OF SHORTINT;

BEGIN

ASSIGN(OUT,'H:\03-101\a7.OUT'); REWRITE(OUT);

RANDOMIZE;

FOR I:=1 TO 3 DO

BEGIN

FOR J:=1 TO 2 DO

BEGIN

L[I,J]:=-15+RANDOM(31);

WRITE(out, L[I,J]:4)

END;

WRITELN(out)

END;

CLOSE(OUT)

END.

В результате выполнения программы в выходном файле получим три строки с двумя псевдослучайными целыми числами от -15 до 15 в каждой строке, например

6 -9

14 3

-2 12

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]