Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)


 



Полная форма объявления одномерного массива



Описание типа задаётся следующим образом:

TYPE

<имя_типа> = ARRAY [ < нач_индекс..кон_индекс > ] OF <тип_данных>;

VAR

<Имя_массива> : < имя_типа >;

Здесь <имя_типа> - правильный идентификатор;

ARRAY, OF – зарезервированные слова (массив, из);

[ < нач_индекс..кон_индекс > ] – список из одного или нескольких индексных типов, разделённых запятыми;

<тип_данных> - базовый тип.

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

Например,

Type mass = array [1..5] of integer;

Var R : Mass;

Данный способ описания массива применяется при работе с подпрограммами: для передачи процедуре или функции параметров одного типа.

Доступ к элементам массива

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

Например, k := R[1] + R[5]; R[3] := 34;

Здесь, в первом случае переменной k присваивается сумма значений элементов массива R с порядковыми номерами 1 и 5. Во втором примере элементу массива R с порядковым номером 3 присваивается значение 34.

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

Например, R[2*I] – элементы массива с чётным индексом; R[2*I-1] – элементы массива с нечётным индексом.

Все операции по формированию элементов массива, обработке массива, выводу на печать выполняются в цикле с параметром.

В частности, для ввода и вывода числовых значений массива используются циклы:

FOR I := 1 TO 10 DO READ (A[I]);

FOR I := 1 TO 10 DO WRITE (A[I]);

В операторах присваивания можно использовать не только элементы массивов, но и массивы в целом. Оператор вида A := B выглядит лаконичнее и выполняется быстрее цикла for i :=1 to n do A[i] := B[i]. Используя в операторах присваивания массивы, следует помнить, что такая конструкция приводит к копированию всего массива! Массивы в целом можно использовать в логических отношениях равенства (=) и неравенства (<>). Другие операции отношения применяются только к отдельным элементам массива.

Элементы массива могут вводиться с клавиатуры или формироваться случайным образом.

В последнем случае используется функция – генератор случайных чисел Random. Эта функция согласно определённому алгоритму при каждом обращении к ней возвращает случайное число – либо вещественное, из интервала [0..1], если аргумент отсутствует, либо целое, если задан целочисленный аргумент. Чтобы эта функция работала корректно, рекомендуется вначале её инициализировать, вызвав процедуру Randomize без параметров.

Например,

randomize;

for i := 1 to 10 do R[i] := random; (из интервала [0..1])

или

randomize;

for i := 1 to 10 do R[i] := random(11); (из интервала [0..10])


Условия чётности и нечётности элемента массива:


If R[i] mod 2 = 0 then …

If odd (R[i]) then …или

If odd (R[i]) = false then …

If R[i] mod 2 <>0 then …

If not odd (R[i]) then …или

If odd (R[i]) = true then …


 
 

Задача 7.1.В массиве, состоящем из пяти элементов подсчитать количество положительных и отрицательных элементов. Положительные элементы записать в один одномерный массив, а отрицательные – в другой.

Блок-схема алгоритма


Листинг программы

PROGRAM TASK1;

USES CRT;

CONST N = 50;

VAR

A, B, C : ARRAY [1..N] OF INTEGER;

I, K, L : INTEGER;

BEGIN

CLRSCR;

WRITE (‘Введите размерность массива <=50’);

READLN (N);

FOR I := 1 TO N DO READLN (A[I]);

K := 0;

L := 0;

FOR I :=1 TO N DO

BEGIN

IF A[I] < 0 THEN

BEGIN

K := K + 1;

B[K] := A[I];

END

ELSE

BEGIN

L:= L + 1;

C[L] := A[I];

END;

END;

WRITELN (‘Отрицательные элементы массива ’);

FOR I := 1 TO K DO WRIETLN (B[I]);

WRITELN (‘Положительные элементы массива’);

FOR I := 1 TO L DO WRIETLN (C[I]);

WRITELN (‘Кол-во отрицательных элементов ’);

WRITELN (K);

WRITELN (‘Кол-во положительных элементов ’);

WRITELN (L);

READLN;

END.

Задача 7.2.Найти максимальный элемент и значение индекса этого максимального элемента целочисленного одномерного массива, сформированного случайным образом.

Примечание.Данная задача решается перебором всех элементов массива и сравнением их с «пробным» значением, избранным на роль максимального элемента. Если сравниваемый элемент при этом окажется больше по величине, он становиться «пробным» и все последующие значения сравниваются именно с ним.


Алгоритм решения программы №1:

1. Сформировать случайный целочисленный массив R;

2. Присвоить вспомогательной переменной max значение первого элемента массива;

3. Для каждого элемента массива, начиная со второго и заканчивая последним, проверить выполнение условия max > R[i]. Если оно выполнено, то продолжать перебор, иначе присвоить max := R[i]и index = i и продолжать перебор.

 
 

Блок-схема алгоритма

Листинг программы

PROGRAM TASK2;

USES CRT;

CONST N = 100;

VAR R : ARRAY [1..N] OF INTEGER;

I, MAX, INDEX : INTEGER;

BEGIN

CLRSCR;

RANDOMIZE;

FOR I:=1 TO N DO R[I]:=random(11);

MAX := R[1];

INDEX := 1;

FOR I l= 2 TO N DO IF MAX < R[I] THEN

BEGIN

MAX := R[I];

INDEX := I;

END;

WRITELN (‘Значение ’, INDEX, ‘-го максимального элемента равно ’, R[INDEX]);

WRITELN (‘Для завершения работы нажмите <Enter>’);

READLN;

END.

Алгоритм решения программы №2:

1. Сформировать случайный целочисленный массив R;

2. Присвоить вспомогательной переменной index порядковый номер первого элемента массива, то есть 1;

3. Для каждого элемента массива, начиная со второго и заканчивая последним, проверить выполнение условия R[index] > R[i]. Если оно выполнено, то продолжать перебор, иначе присвоить index:=i и продолжать перебор.

Листинг программы

PROGRAM TASK2;

USES CRT;

CONST N = 100;

VAR R : ARRAY [1..N] OF INTEGER;

I, INDEX : INTEGER;

BEGIN

CLRSCR;

RANDOMIZE;

FOR I := 1 TO N DO R[I] := random (11)-5;

INDEX := 1;

FOR I= 2 TO N DO

IF R[INDEX] < R[I]

THEN INDEX := I;

WRITELN (‘Значение ’, INDEX, ‘-го максимального элемента равно ’, R[INDEX]);

WRITELN (‘Для завершения работы нажмите <Enter>’);

READLN;

END.

 
 

Блок-схема алгоритма

Задача 7.3.Сформировать элементы массива случайным образом и вывести на экран в обратном порядке.

Листинг программы

USES CRT;

VAR A : ARRAY [1..100] OF INTEGER; I : INTEGER;

BEGIN

CLRSCR;

RANDOMIZE;

WRITELN (‘Сформированный массив: ’);

FOR I := 1 TO 100 DO

BEGIN

A[I] := RANDOM (11) - 6; {[-6..4]}

WRITE (‘A[’, I, ‘]= ’, A[I]:3, ‘’:2);

END;

READLN; {Enter}

WRITELN (‘Изменённый массив: ’);

FOR I := 100 DOWNTO 1 DO WRITE (‘A[’, I, ‘]= ’, A[I]:3, ‘’:2);

READLN;

END.

Задача 7.4.Сформировать массив случайным образом, состоящим из 1000 элементов, числа находятся в диапазоне от 150 до 250. Сосчитать количество чисел больших 200.

Листинг программы

USES CRT;

VAR A : ARRAY [1..1000] OF INTEGER;

I, K: INTEGER;

BEGIN

CLRSCR;

RANDOMIZE;

WRITELN (‘Сформированный массив:’);

FOR I := 1 TO 1000 DO

BEGIN

A[I] := RANDOM (101) +150; {[150..250]}

WRITE (‘A[’, I, ‘]= ’, A[I]:3, ‘’:2);

END;

READLN; {Enter}

K := 0;

FOR I := 1 TO 1000 DO IF A[I] > 200 THEN K := K +1;

WRITELN (‘Количество элементов >200 = ’, K:2);

READLN;

END.

Вопросы для самопроверки

1. Дайте определение массива?

2. Как осуществляется объявление массива в разделе Var (1 способ)?

3. Каким образом можно объявить массив в разделе Var, если создан новый тип массива в разделе Type (2 способ)?

4. Что необходимо знать, чтобы обратиться к определённому элементу массива?

5. Объясните назначение 2-го способа объявления массива?

6. Как организовать ввод и вывод элементов массива?

7. Как можно реализовать формирование элементов массива случайным способом?


Лабораторная работа №7_1



Просмотров 798

Эта страница нарушает авторские права




allrefrs.su - 2025 год. Все права принадлежат их авторам!