Задачи для изучающих программирование самостоятельно 30 Задания на лабораторную работу по теме "Обработка одномерных массивов" 39

Вид материалаДокументы

Содержание


Ввод/вывод массива
Вычисление суммы и среднего арифметического элементов массива
Program SumExample
Begin { ввод массива с клавиатуры }
Подобный материал:
1   2   3   4   5   6   7   8   9

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



Задача 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;