- •Лабораторная работа №5 Использование массивов в среде программирования Pascal
- •3.2 Описание одномерных массивов на языке Pascal
- •3.3 Типовые задачи обработки массивов данных
- •3.3.1 Нахождение суммы элементов массива
- •3.3.2 Поиск данных в массивах
- •3.3.3 Сортировка массивов данных
- •3.4 Двумерные массивы
- •3.5 Описание двумерных массивов на языке Pascal
- •3.6 Обработка двумерных массивов данных
- •4 Содержание работы
- •5 Контрольные вопросы
- •Приложение а Варианты заданий по теме «Одномерные массивы»
- •Приложение б Варианты заданий на тему «Двумерные массивы»
- •Приложение в Варианты заданий по теме «Замена и перестановка элементов матриц»
3.4 Двумерные массивы
Массив, для задания элементов которого требуется использовать два индекса, называется двумерным. Примерами двумерных массивов являются разнообразные таблицы, в которых каждый элемент характеризуется своим номером строки и номером столбца.
Например, в качестве двумерного массива можно представить оценки из аттестационной ведомости студентов, где каждая оценка показывает знания некоторого студента по определенному предмету:
Ф.И.О. |
Математика |
Информатика |
Физика |
Химия |
Андреев А.Л. |
5 |
5 |
4 |
5 |
Биктимиров С.Р. |
3 |
4 |
3 |
2 |
Симонова В.П. |
4 |
3 |
4 |
3 |
Д вумерные массивы, в которых диапазоны индексов начинаются с 1, также называются иногда матрицами. Размерность каждой матрицы определяется как MxN, где М – число строк в матрице, N – число столбцов.
Например, в предложенной выше матрице оценок из трех строк и четырех столбцов элемент A[3, 1]=4, A[1, 2]=5. Первый индекс элемента матрицы характеризует номер строки матрицы, в которой расположен элемент, второй индекс – номер столбца.
Если число строк матрицы равняется числу столбцов, то матрицы данного типа называются квадратными. Элементы квадратной матрицы вида B[1,1], B[2,2], B[3,3]… составляют главную диагональ матрицы.
3.5 Описание двумерных массивов на языке Pascal
Описание типов двумерных массивов в языке Pascal осуществляется аналогично описанию типов одномерных массивов с добавлением диапазона изменения второго индекса, например:
TYPE MATR=ARRAY[1..4, 1..5] OF INTEGER;
TYPE T=ARRAY[0..10, 2000..2004] OF REAL;
Также допускается указание имени другого типа массива в качестве типа элементов массива, например:
TYPE VEC=ARRAY[1..4] OF REAL;
MAS=ARRAY[1..5] OF VEC;
Переменные, относящиеся к типу массива, должны быть соответствующим образом объявлены в разделе описания переменных, например:
VAR А: MATR;VAR B, C, D: T;VAR R: ARRAY [1..5, 1..10] OF INTEGER;
3.6 Обработка двумерных массивов данных
При решении задач на использование двумерных массивов применяются те же алгоритмы, что и при работе с одномерными массивами. При вводе и выводе элементов двумерных массивов используются вложенные циклы, в которых внешний оператор цикла, как правило, задает изменение номеров строк массива, внутренний оператор цикла – изменение номеров столбцов.
Пример 1. Найти количество положительных элементов в заданной целочисленной матрице размерности 5х6.
PROGRAM Mas_count;
Type Matr=array[1..5,1..6] of integer;
Var A: Matr;
i, j, k: integer;
begin
k:=0;
for i:=1 to 5 do
for j:=1 to 6 do
begin
writeln('Введите элемент массива');
readln(a[i,j]);
if a[i,j]>0 then k:=k+1 {Подсчет количества положительных элементов}
end;
writeln('k=', k)
end.
Пример 2. Найти наибольший элемент в первом столбце заданной действительной матрицы размерности 4х5.
PROGRAM Mas_max;
Type Matr=array[1..4,1..5] of real;
Var A: Matr;
i, j: integer; max: real;
begin
for i:=1 to 4 do
for j:=1 to 5 do
begin
writeln('Введите элемент массива');
readln(a[i,j])
end;
max:=a[1,1];
for i:=2 to 4 do
if a[i,1]>max then max:=a[i,1]; {Проверка элементов первого столбца}
writeln('max=', max)
end.
Пример 3. Известны экзаменационные оценки 10 студентов по 5 предметам. Вычислить средний балл каждого студента по итогам экзаменационной сессии.
Матрицу оценок зададим с использованием функции генератора случайных чисел Random.
PROGRAM Obr_mas;
Type Mas=array[1..10,1..5] of byte;
Var A: Mas;
i,j: integer; s, sr:real;
begin
for i:= 1 to 10 do
for j:= 1 to 5 do A[i, j]:=2+random(4); {генерирование матрицы оценок}
writeln('Матрица оценок ');
for i:= 1 to 10 do {начало вывода матрицы оценок на экран}
begin
for j:= 1 to 5 do write(A[i,j]:3); {вывод в строку оценок i–го студента}
writeln {переход к следующей строке}
end;
writeln('Средний балл ');
for i:= 1 to 10 do
begin
s:= 0;
for j:= 1 to 5 do S:= S + A[i,j]; {подсчет суммы оценок i–го студента}
sr:=s/5; {подсчет его среднего балла}
writeln(i,' студент - ',sr:4:2) {вывод на экран результата}
end
end.