Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб.раб. программирование.pdf
Скачиваний:
111
Добавлен:
21.05.2015
Размер:
764.95 Кб
Скачать

Лабораторная работа 6. Массивы

Массив – упорядоченный набор однотипных значений – компонент массива. Тип компонент называется базовым типом массива.

Описание массивов

VAR <имя переменной> : ARRAY [<индексы>] OF <type>;

<type> - базовый тип.

Примеры описания массивов

Var a : array[1..10] of integer; - последовательность целых чисел

Обращение к элементам массива

i := 1; A[i] – i-й элемент из массива А;

A[i+1] – следующий за i элемент массива А;

A[1] – первый элемент из массива А.

Приведем примеры:

1.

1

2

3

4

5

4

3

2

1

0

Var a : array [1..5] of integer;

A[2] = 3;

Рассмотрим пример программы, находящей среднее арифметическое элементов массива.

Program Primer;

Const n = 10;

Type mas = array [1..n] of integer;

Procedure In_Mas (var a : mas); var i : integer;

begin

for i := 1 to n do a[i] := random(10); end;

© ИМПИ ОГПУ

end;

Procedure Out_Mas (a : mas); var i : integer;

begin

for i := 1 to n do write(a[i],’ ‘) end;

Procedure Main(a : mas; var sr : real); var i, s : integer;

begin

for i := 1 to n do s := s+a[i]; sr := s/n;

var m : mas; sr_ar : real; begin

In_Mas(m);

Out_Mas(m); Main(m, sr_ar);

end. Writeln(‘ответ=’, sr_ar)

Алгоритм «пузырьковой» сортировки линейного массива по возрастанию.

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

Procedure Sort_Mas (var a : mas); var i, j, temp : integer;

begin

for i:=1 to n do for j:=1 to n-i do

if a[j]>a[j+1] then begin

Temp := a[j]; a[j] := a[j+1];

a[j+1] := Temp; end;

end;

© ИМПИ ОГПУ

Двумерные массивы

 

 

 

 

Приведем пример описания:

 

 

 

 

 

1

2

3

4

1

3

2

1

0

2

-2

3

1

7

3

0

4

6

7

Var a : array [1..4, 1..4] of integer;

A[2,2] = 3;

Рассмотрим пример программы, находящей сумму наибольших чисел каждой строки.

Program Primer;

Const n = 3;

Type Matr = array [1..n, 1..n] of byte;

Procedure In_Matr(var x : Matr); var i, j : integer;

begin

for i := 1 to n do

end;for j := 1 to n do x[i,j] := random(10);

Procedure Out_Matr(x : Matr); var i, j : integer;

begin

for i := 1 to n do begin

for j := 1 to n do write(x[i,j],' ');

writeln; end;

end;

Procedure Summ_MaxEl(x : Matr; var sum : byte);

var i, j, max : integer; begin

max := x[1,1]; sum := 0; for i := 1 to n do

begin

for j := 1 to n do

if x[i,j]>max then max := x[i,j];

sum := sum+max; max := 0; end; end;

© ИМПИ ОГПУ

var a : Matr; summa : byte; begin

In_Matr(a); Out_Matr(a);

Summ_MaxEl(a, summa); writeln('ответ=', summa) end.

Задания для самостоятельной работы

Вариант 1.

1.Заполнить массив числами, введенными с клавиатуры, вывести этот массив, увеличить все элементы на 5 и снова вывести получившийся массив на экран.

2.Найти элементы массива равные 10 и вывести их индексы.

3.В двумерном массиве найти количество четных элементов.

4.Вывести массив следующего вида. Размерность произвольная.

1 1 1 1

1 0 0 1

1 0 … 1

1 1 1 1

Вариант 2.

1.Заполнить массив числами, введенными с клавиатуры, вывести этот массив, увеличить все элементы в два раза и снова вывести получившийся массив на экран.

2.Найти элементы массива меньшие 0 и вывести их индексы.

3.В двумерном массиве найти сумму нечетных элементов.

4.Вывести массив следующего вида. Размерность произвольная.

1 0 0 0

0 2 0 0

0 0 … 0

0 0 0 N

Вариант 3.

1.Заполнить массив случайными числами, вывести этот массив, уменьшить все элементы в два раза и снова вывести получившийся массив на экран.

©ИМПИ ОГПУ