Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




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

Например, 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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...