ПРОГРАММИРОВАНИЕ ЗАДАЧ С ДВУМЕРНЫМИ МАССИВАМИ
Цель работы: научиться составлять программы на языке Pascal для программирования задач с двумерными массивами.
Оборудование: персональный компьютер типа IBM PC с процессором не ниже Intel Pentium I.
Дидактический материал: плакаты, раздаточный материал.
Двумерные массивы
Двумерный массив (матрица) – одномерный массив, элементы которо- го также являются одномерными массивами. Матрица имеет вид:
æ a11
ç
A = ç a21
a12 a22
… a1n ö
÷
… a2n ÷ .
ç ⁝ ⁝ ⁝ ÷
ç ÷
a a … a
æ 1
Пример 1. A ç 5
è m1
2 3
6 7
m2
4 ö
8 ÷ .
mn ø
= ç- ÷
ç 10 1 - 1÷
Элемент массива – величина, входящая в состав массива. Индекс – порядковый номер строки или столбца в двумерном массиве. Двумерные
массивы обычно обозначаются так: A = (aij ); A(m, n), где A – массив; m – коли-
чество строк; n – количество столбцов; i – индекс строки; j – индекс столбца;
aij – элемент массива A в i-й строке и j-м столбце.
Описание двумерного массива в разделе описания переменных (var) на языке Pascal имеет вид:
Это означает, что переменная Mas является массивом, который может
иметь индексы строк от IMin до IMax , индексы столбцов от JMin до
JMax , а также состоит из элементов типа T .
Пример 2. Var A:array[1..10,1..15] of real;
Это означает, что A – массив, который может содержать от 1 до 10 строк и от 1 до 15 столбцов из элементов вещественного типа.
Доступ к элементу двумерного массива на языке Pascal имеет вид:
Это означает доступ к элементу массива Mas с индексом строки Ind1 и
индексом столбца Ind2.
Пример 3. a[1,1]; b[i,j].
Это означает элемент массива A в 1-й строке и 1-м столбце, элемент массива B в i-й строке и j-м столбце.
Порядок выполнения
1. Зайти в Borland Pascal (или Pascal ABC).
2. Набрать текст программы для решения задачи № 1 и получить ответ для контрольного примера.
3. Исправить программу так, чтобы она находила сумму и произведение эле- ментов выше главной диагонали.
4. Исправить программу так, чтобы она находила минимальное и максималь- ное значение отрицательных элементов.
5. Исправить программу так, чтобы она находила количество нулевых и среднее значение положительных элементов.
Пример задачи
Задача 1. Дан двумерный массив A (m, n). Найти сумму и произведение всех эле- ментов, а также вычислить минимальный и максимальный элементы. |
Program lab7b; Var A: array [1..10,1..15] of real; i, j, m, n: integer; s, p, min, max: real; Begin writeln('Введи m,n'); read(m,n); writeln('Введи массив A'); for i:=1 to m do for j:=1 to n do read(A[i,j]); s:=0; p:=1; min:=A[1,1]; max:=A[1,1]; for i:=1 to m do for j:=1 to n do begin s:=s+A[i,j]; p:=p*A[i,j]; if A[i,j]<min then min:=A[i,j]; if A[i,j]>max then max:=A[i,j]; end; writeln('s=',s:10:3,' p=',p:10:3, ' min=',min:10:3,' max=',max:10:3); End. |
Контрольный пример. |
|
Исходные данные: |
m = 3 ; n = 4; æ 1 2 3 4 ö ç ÷ A = ç- 5 6 7 8 ÷ . ç 9 10 1 - 1÷ è ø |
Результаты: |
s = 45 ; p = 3628800 ; min = -5; max = 10 . |
Дополнительное задание
1. Дан массив B (m, n). Найти сумму положительных элементов и количество элементов в диапазоне от 10 до 20.
2. Дан массив C (m, n). Найти произведение элементов, больших среднего значения.
3. Дан массив D (m, n). Найти среднее значение среди элементов, не совпа- дающих с минимальным.
4. Дан массив L (n, n). Найти максимальный среди отрицательных элементов и сумму элементов на главной диагонали.
5. Дан массив P (n, n). Элементы выше главной диагонали заменить на ноль, а ниже главной диагонали – округлить.
6. Сформировать двумерный массив A (m, n), элементы которого вычисляют-
ся по формуле: личин.
aij = i + j - Rij , где R (m, n) – двумерный массив случайных ве-
7. Дан массив R (m, n). Найти произведения элементов в каждой строке и
максимальные элементы в каждом столбце.
8. Дан массив W (m, n). Найти суммы элементов в каждом столбце и мини- мальные элементы в каждой строке.
9. Дан массив S (m, n). Найти массив минимальных элементов в каждой стро- ке, а затем в новом массиве отсортировать элементы по возрастанию.
10. Дан массив T (m, n). Отсортировать столбцы по убыванию их средних значений.
Фрагменты вычисления характеристик строк и столб- цов двумерного массива
Характеристика |
Для каждой строки |
Для каждого столбца |
1. Сумма s |
for i:=1 to m do begin s[i]:=0; for j:=1 to n do s[i]:=s[i]+A[i,j]; end; |
for j:=1 to n do begin s[j]:=0; for i:=1 to m do s[j]:=s[j]+A[i,j]; end; |
2. Произведение p |
for i:=1 to m do begin p[i]:=1; for j:=1 to n do p[i]:=p[i]*A[i,j]; end; |
for j:=1 to n do begin p[j]:=1; for i:=1 to m do p[j]:=p[j]*A[i,j]; end; |
3. Максимальное значение max |
for i:=1 to m do begin max[i]:=A[i,1]; for j:=1 to n do if A[i,j]>max[i] then max[i]:=A[i,j]; end; |
for j:=1 to n do begin max[j]:=A[1,j]; for i:=1 to m do if A[i,j]>max[j] then max[j]:=A[i,j]; end; |
4. Минимальное значение min |
for i:=1 to m do begin min[i]:=A[i,1]; for j:=1 to n do if A[i,j]<min[i] then min[i]:=A[i,j]; end; |
for j:=1 to n do begin min[j]:=A[1,j]; for i:=1 to m do if A[i,j]<min[j] then min[j]:=A[i,j]; end; |
Фрагменты операций с двумерными массивами
1. Ввод элементов массива |
writeln('Введи массив A'); for i:=1 to m do for j:=1 to n do read(A[i,j]); |
2. Вывод элементов массива |
writeln('Массив A'); for i:=1 to m do begin for j:=1 to n do write(A[i,j]:10:3); writeln; end; |
3. Замена элементов массива на вели- чину z |
for i:=1 to m do for j:=1 to n do A[i,j]:=z; |
4. Увеличение элементов массива на величину z (аналогично уменьше- ние, умножение, деление) |
for i:=1 to m do for j:=1 to n do A[i,j]:=A[i,j]+z; |
5. Вычисление элементов массива B прибавлением к элементам массива A величины z (аналогично отнима- нием, умножением, делением) |
for i:=1 to m do for j:=1 to n do B[i,j]:=A[i,j]+z; |
Квадратные матрицы
Матрица называется квадратной, если у неё количество строк равно ко- личеству столбцов ( m = n ).
æ a11
a12
a13 ö
Главная диагональ
Рассмотрим квадратную матрицу: A = ç a
ç
è 31
a22
a32
÷
a23 ÷ .
a33 ø
ìi =
j, если
aij на
главной
диагонали;
У ней
ïi <
í
j, если
aij
выше
главной
диагонали;
ïi >
j, если
aij
ниже главной
диагонали;
ïi ¹
j, если
aij
вне главной
диагонали.
Контрольные вопросы
1. Объясните понятие двумерного массива, его элемента, индекса? Как обо- значаются двумерные массивы?
2. Как описываются двумерные массивы и обозначаются их элементы? При- ведите примеры.
3. Какие особенности у элементов на главной и побочной диагонали в квад- ратных матрицах?
4. Чем отличается вычисление характеристик двумерного массива от таких же характеристик одномерного массива?
5. Чем отличаются операции с двумерными массивами от таких же операций с одномерными массивами?
6. Чем отличается вычисление характеристик массива по строкам от анало- гичного вычисления по столбцам?
7. Напишите, что означает каждая строка в вышеприведённой программе.
8. Напишите программу к одной из задач дополнительного задания.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.