Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 3.docx
Скачиваний:
3
Добавлен:
21.03.2015
Размер:
83.52 Кб
Скачать

Ввод/вывод массива

Задача 1: Ввод массива с клавиатуры

Алгоритм состоит из двух пунктов:

1 . Ввод количества элементов.

2 . Ввод элементов массива поодиночке в цикле.

Фрагмент программы:

{

1

-

ввод количества элементов}

repeat

write('Введите n:');

readln(n);

until (n>=1) and (n<=maxN);

{2 - ввод элементов массива поодиночке}

for i:=1 to n do

begin

write('a[',i,']');

readln(a[i]);

end;

Задача 2: Заполнение массива случайными числами.

Алгоритм состоит из трех пунктов:

1 . Перезапустить генератор случайных чисел.

2 . Ввести количество элементов n (или сгенерировать

случайное значение n).

3 . Сгенерировать значения для всех элементов.

Фрагмент программы:

{

1

-

перезапускаем генератор случайных чисел}

randomize;

{2 - генерируем случайное значение n}

n:=random(maxN);

{3 - генерируем n элементов массива}

for i:=1 to n do

a[i]:=random(100); {каждый элемент примет значение

из интервала 0..99}

Краткая информация об используемых стандартных процедурах и функциях:

Randomize - инициализирует генератор случайных чисел случайным значением (случайное значение зависит от момента перезапуска, т.е. зависит от времени).

Random(Num) - возвращает случайное целое число, находящееся в интервале 0 .. (Num-1) (Например, если Num=100 (как в нашем примере), то Random возвращает числа в интервале от 0 до 99). Если Num<=0, то Random всегда будет возвращать 0. Чтобы получить значения в интервале, отличном от [0..Num-1], необходимо к значению, возвращаемому Random, прибавить

смещение начала интервала.

Пример 1: необходим интервал [-50 .. 50].

Длина интервала 101, смещение начала интервала –50.

random(101)-50

Пример 2: необходим интервал [20 .. 30].

Длина интервала - 11, смещение начала интервала 20.

random(11)+20

Пример 3: необходим интервал [-1000 .. -500]

Длина интервала 501, смещение начала интервала -1000

random(501)-1000

Задача 3: Вывод массива.

Алгоритм состоит из двух пунктов:

1. Вывод имени массива.

2. Вывод массива по элементам.

Фрагмент программы:

{

1

-

вывод имени массива}

writeln ('Массив А[',n,']');

{2 - вывод элементов массива}

for i:=1 to n do

writeln('A[',i,']=',a[i]);

Вычисление суммы и среднего арифметического элементов

массива

Задача 4: Подсчитать сумму элементов массива.

Алгоритм содержит два пункта:

1. Сумма S=0.

2. Проход по всем элементам массива и прибавление их значений к

сумме S.

Приведем полный текст программы – решение этой задачи:

{Пример обработки одномерного массива}

{ Задание: Ввести массив. Подсчитать сумму элементов массива.}

Program SumExample;

Const {определение констант}

maxN = 20; {максимально возможное количество элементов в массиве}

Type {определение типов}

IndexEl = 1 .. maxN; {индексы массива лежат в интервале от 1 до maxN}

arrInt = array[interval] of integer; {массив целых чисел содержащий до maxN элементов}

Var

a:arrInt; {массив}

n:interval; {размерность массива}

i:IndexEl; {переменная для сканирования массива}

S:integer; {сумма элементов массива}

Begin

{ ввод массива с клавиатуры }

write(‘Введите n=’);

read(n); {ввод количества элементов}

for i:=1 to n do

read(A[i]); {ввод самих элементов}

{Подсчет суммы элементов массива}

{1} s:=0;

{2} for i:=1 to n do

s:=s+A[i];

{Вывод полученного значения суммы}

writeln(‘сумма элементов массива S=’, S);

end. {конец программы}

Задача 5: Вычислить среднее арифметическое элементов массива.

Алгоритм содержит три пункта. Первые два совпадают с предыдущей задачей:

1. Сумма s=0.

2. Проход по всем элементам массива и прибавление их значений к сумме s.

3. Сумму делим на количество элементов массива sa=s/n .

Фрагмент программы:

Var {дополнительные переменные}

s: integer; {сумма элементов массива}

sa:real; {среднее арифметическое элементов массива}

Begin

...

{1} s:=0;

{2} for i:=1 to n do

s:=s+A[i];

{3} s:=s/n;