ПРОГРАММИРОВАНИЕ ЗАДАЧ С ДВУМЕРНЫМИ МАССИВАМИ

  • docx
  • 26.12.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л3-0025372.docx

ПРОГРАММИРОВАНИЕ ЗАДАЧ С ДВУМЕРНЫМИ МАССИВАМИ

Цель работы: научиться составлять программы на  языке 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 ø


= ç-                                                  ÷

ø9èç                                            10     1     - 1÷

Элемент массива –              величина, входящая в состав массива. Индекс порядковый номер строки или столбца в двумерном массиве. Двумерные

массивы обычно обозначаются так:  A = (aij ) A(m, n),  где A массив; m коли-

чество строк; n количество столбцов; i индекс строки; j индекс столбца;

aij – элемент массива A в i-й строке и j столбце.

Описание двумерного массива в разделе описания переменных (var) на языке Pascal имеет вид:

Mas : array [ IMin .. IMax , JMin .. JMax ] of T

Это означает, что переменная 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 ]

Это означает доступ к элементу массива 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 ö


Главная диагональ


ç21Рассмотрим квадратную матрицу: A = ç 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.   Напишите программу к одной из задач дополнительного задания.