Практическая работа №7.
Решение задач с использованием двумерных массивов.
Цель работы: закрепление навыков решения задач с использованием двумерных массивов на языке Паскаль.
Оборудование: персональный компьютер, программа PascalABC, методические указания по работе (в электронном виде находятся в папке «Методические указания» на рабочем столе компьютера), карты-задания
Содержание и последовательность выполнения практической работы:
1. Инструктаж по технике безопасности
2. Выполнение практического задания
Теория.
На прошлом занятии мы с вами рассматривали таблицу, содержащие значения температуры за определенный год. Теперь представим, что нам требуется собрать информацию о среднемесячных температурах за 10 лет. Например, с 2000 по 2010 год. Очевидно что для этого удобна прямоугольная таблица, в которой столбцы соответствуют годам, а строки месяцам.
|
Год |
1 |
2 |
3 |
4 |
… |
12 |
|
2000 |
-23 |
-17 |
-8 |
6,5 |
… |
-18 |
|
2001 |
-16 |
-8 |
7,1 |
8,4 |
… |
-13 |
|
2002 |
-9,8 |
-14 |
-9,2 |
4,6 |
… |
-16 |
|
… |
… |
… |
… |
… |
… |
… |
|
2010 |
-25 |
-9 |
-4 |
9 |
… |
-14 |
Для значений хранящихся в такой таблице удобно использовать двухиндексные обозначения. Например: Н2000,2 обозначает температуру в феврале 2000 года. А совокупность данных, составляющих таблицу, обозначается так: {Тi,j}, i = 2000, …, 2010, j =1,…,12.
В Паскале аналогом таблиц является структурированный тип данных, который называется регулярным типом или массивом. Массив, хранящий прямоугольную таблицу, называется двумерным или матрицей.
Двумерный массив (матрицу) можно представить как линейный массив, каждый элемент которого, в свою очередь, является линейным массивом.
Описание двумерных массивов:
Переменная типа двумерный массив описывается в разделе описания переменных в следующем виде:
var имя массива: array[1..n,1..m] of тип;
n – количество строк матрицы; m – количество столбцов матрицы.
Пример: var T:array[1..10,1..12] of real;
Действия над массивом, как единым целым:
Такие действия допустимы лишь в двух случаях:
1) присваивание значений одного массива другому;
2) операции отношения «равно», «неравно»;
В обоих случаях массивы должны иметь одинаковые типы (тип индексов и тип элементов).
Например, если в массиве требуется девятой строке присвоить значение первой строки, то это можно сделать так: Т[9]:=Т[1].
Двумерные массивы могут подвергаться тем же обработкам, что и линейные. Отличие двумерных массивов от линейных, состоит в том, что элементы массива имеют два индекса, которые указывают положение элемента в массиве и служат идентификатором при поиске элементов.
При работе с двумерными массивами организуется два цикла по строке и по столбцу.
Ввод матрицы (чтение матрицы):
writeln(‘введите матрицу размера ’,n,‘ на’,m);
for i:=1 to n do
begin
writeln(‘введите элементы ’,i,‘строки’);
for j:=1 to m do
read(a[i,j]);
end;
Вывод матрицы:
writeln(‘матрица’);
for i:=1 to n do
begin
for j:=1 to m do
write(‘a[’,i,‘,’,j,‘]=’, a[i,j]:0:2,‘ ’);
writeln
end;
Примеры задач.
1. Дана матрица размера 3 на 4 целого типа. Найти сумму отрицательных элементов 3-й строки матрицы.
Program summa;
Const n=3;
m:=4;
Var a:array[1..n,1..m] of integer;
i, j, s:integer;
Begin {ввод матрицы}
writeln(‘введите матрицу размера ’,n,‘ на’,m);
for i:=1 to n do
begin
writeln(‘введите элементы ’,i,‘строки’);
for j:=1 to m do
read(a[i,j]);
end;
{нахождение суммы}
s:=0;
for j:=1 to m do
if a[3,j] <0
then s:=s+a[3,j];
{печать суммы}
writeln (‘сумма отрицательных элементов 3 строки=’,s);
end.
2. Дана матрица размера 4 на 4. Найти количество положительных элементов главной диагонали матрицы.
Program summa;
Const n=4;
m:=4;
Var a:array[1..n,1..m] of real;
i, j, k:integer;
Begin {ввод матрицы}
writeln(‘введите матрицу размера ’,n,‘ на’,m);
for i:=1 to n do
begin
writeln(‘введите элементы ’,i,‘строки’);
for j:=1 to m do
read(a[i,j]);
end;
{нахождение количества положительных элементов главной диагонали}
k:=0;
for i:=1 to n do
if a[i,i] >0
then k:=k+1;
{печать количества}
writeln (‘количество положительных элементов главной диагонали=’,k);
end.
3.
Получить матрицу размера 5 на 5 по следующим формулам
. Вывести полученную
матрицу. Сосчитать сумму отрицательных элементов матрицы.
Program summa;
Const n=5;
m:=5;
Var a:array[1..n,1..m] of integer;
i, j, k:integer;
Begin {получение матрицы}
for i:=1 to n do
for j:=1 to m do
if i>j
then a[i,j]:=i-sqr(j)
else a[i,j]:=abs(i-j);
{вывод матрицы}
writeln(‘матрица’);
for i:=1 to n do
begin
for j:=1 to m do
write(‘a[’,i,‘,’,j,‘]=’, a[i,j],‘ ’);
writeln
end;
{нахождение суммы отрицательных элементов матрицы}
k:=0;
for i:=1 to n do
for j:=1 to m do
if a[i,j] <0
then k:=k+a[i,j];
{печать суммы}
writeln (‘сумма отрицательных элементов матрицы=’,k);
end.
4. Дана матрица размера 4 на 3 вещественного типа. Найти минимальный элемент матрицы.
Program minimum;
Const n=4;
m:=3;
Var a:array[1..n,1..m] of real;
i, j:integer;
min:real;
Begin {ввод матрицы}
writeln(‘введите матрицу размера ’,n,‘ на’,m);
for i:=1 to n do
begin
writeln(‘введите элементы ’,i,‘строки’);
for j:=1 to m do
read(a[i,j]);
end;
{нахождение минимального элемента матрицы}
min:=a[1,1];
for i:=1 to n do
for j:=1 to m do
if a[i,j] <min
then min:=a[i,j];
{печать минимума}
writeln (‘минимум=’,min:0:2);
end.
5. Дана матрица размера 3 на 5 целого типа. Заменить все положительные числа на 1, а отрицательные на -1. Вывести полученную матрицу.
Program zamena;
Const n=3;
m:=5;
Var a:array[1..n,1..m] of integer;
i, j:integer;
Begin {ввод матрицы}
writeln(‘введите матрицу размера ’,n,‘ на’,m);
for i:=1 to n do
begin
writeln(‘введите элементы ’,i,‘строки’);
for j:=1 to m do
read(a[i,j]);
end;
{замена}
for i:=1 to n do
for j:=1 to m do
if a[i,j] >0
then a[i,j]:=1
else a[i,j]:=-1;
{вывод матрицы}
writeln(‘матрица’);
for i:=1 to n do
begin
for j:=1 to m do
write(‘a[’,i,‘,’,j,‘]=’, a[i,j],‘ ’);
writeln
end;
end.
Задания.
Студенты решают задачи на компьютерах по вариантам с помощью среды программирования PascalABC.
Вариант 1
1. Дана матрица размера 4 на 4 целого типа. Найти сумму положительных элементов главной диагонали матрицы.
2.
Задать матрицу размера 5 на 5 по следующей формуле:
. Вывести полученную матрицу.
3. Дана матрица размера 3 на 3 действительного типа. Найти максимальный элемент матрицы.
4.
Задать матрицу размера 4 на 4 по следующей формуле:
. Вывести полученную матрицу. Найти
количество отрицательных элементов матрицы.
Вариант 2
1. Дана матрица размера 3 на 4 действительного типа. Найти сумму отрицательных элементов 3-й строки матрицы.
2.
Задать матрицу размера 5 на 5 по следующей формуле:
. Вывести полученную матрицу.
3. Дана матрица размера 3 на 3 целого типа. Найти минимальный элемент 2-го столбца матрицы.
4.
Задать матрицу размера 4 на 4 по следующей формуле:
. Вывести полученную матрицу. Найти
количество положительных элементов матрицы.
Вариант 3
1. Дана матрица размера 4 на 3 действительного типа. Найти количество положительных элементов 2-й строки матрицы.
2.
Задать матрицу размера 5 на 5 по следующей формуле:
. Вывести полученную матрицу.
3. Дана матрица размера 3 на 3 целого типа. Найти минимальный элемент матрицы.
4.
Задать матрицу размера 4 на 4 по следующей формуле:
. Вывести полученную матрицу. Найти
сумму отрицательных элементов матрицы.
Вариант 4
1. Дана матрица размера 4 на 4 целого типа. Найти количество отрицательных элементов главной диагонали матрицы.
2.
Задать матрицу размера 5 на 5 по следующей формуле:
. Вывести полученную матрицу.
3. Дана матрица размера 3 на 3 действительного типа. Найти максимальный элемент 2-й строки матрицы.
4.
Задать матрицу размера 4 на 4 по следующей формуле:
. Вывести полученную матрицу. Найти
сумму положительных элементов матрицы.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.