ПРАКТИЧЕСКАЯ РАБОТА №11 – получение практических навыков по работе с массивами


ПРАКТИЧЕСКАЯ РАБОТА №11. РАБОТА С двумерным массивом ЧИСЕЛ

Цель работы: получение практических навыков по работе с массивами и овладение навыками алгоритмизации и программирования структур с вложенными циклами, способами ввода и вывода матриц, работа с диапазонным и перечисленным типам дано.

 

3.1 теоретические сведения

Перечислен тип является ординальное типу, что создается программистом.(Ординальнисть — свойство типа.Ординальное является тип с ограниченным количеством констант. Каждая константа имеет свой порядковый номер. К ординальных относятся цели, символьный, логический, перечислен, диапазонный типы) перечислен тип задается перечислением всех своих значений, которые являются идентификаторами, причем каждое значение может принадлежать только одному перечисленному типа. Ординальное номер первой константы есть 0, а следующих 1,2 …В отличие от данных других ординальных типов, данные перечисленного типа не могут быть непосредственно введены или выведены, их можно присваивать, сравнивать, принимать следующее, предыдущее значение, определять ординальное номер.

Приведем примеры описания данных перечисленного типа: Type month = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec) Var m: month;

s: (CPM, MSXDOS_2_0, PCDOC, UNIX)

Диапазонный тип является некоторой опилками уже существующего ординальное типа.Он определяется указанием маленького и большого значения, входящих в диапазон, в то же время, нижняя граница не должна превышать верхнюю. Тип данной диапазонного типа определяется по типу границ. Тип предельных значений называется базовым. Над данной диапазонного типа возможны все операции, определенные для базового типа.

Приведем примеры описания данной диапазонного типа:

Type spring = mar..may;

Var sm: spring;

a: 0..100;

В данном случае считают, что перечисленный тип, содержащий mar и may, уже описанный ранее.

Масивов тип является составным или структурным типом.Массив состоит из фиксированного числа компонент, каждая из которых имеет один и тот же тип.Компоненты массива называются его элементами. Элементы массива могут иметь тип и тип, введенный пользователем. Тип элементов массива называется базовым. Элементы массива размещены упорядоченно, каждый имеет свой номер, который называется индексом. Доступ к элементам массива осуществляется путем указания порядкового номера (индексации). Индексом может быть любое выражение ординальное типа. Тип индекса определяет границы изменения значений индекса, количество элементов в массиве.

Описание одномерного масивов типа состоит из ключевого слова array, по которому в квадратных скобках записано тип индекса, ключевого слова of и описание типа элементов.

Общий вид описания масивов типа:

Type <имя типа> = array [<тип индекса>] of <тип элементов>; Например,

Const n = 10;

Type rgb = (red, green, blue)

nat = 1 ..MaxInt;

ar = array [0..n] of Integer;

Var matrix: array [1 ..8,1 .. 8] of Real; color: array [rgb] of Byte;

a, b: ar;

ar2: array [nat] of ar;

c: array [0..n] of Integer;

Следует отметить, что типы переменных а и с не эквивалентны, так как переменная а имеет тип аr, а переменная

с не является типа аr.

Если базовым типом является масивов, то получаем многомерный массив. В приведенном примере переменные ar2 и matrix является двумерными массивами.Описание переменной matrix эквивалентен такому описания

Var matrix: array [1..8] of array [1..8] of Real;

То есть многомерные массивы можно описать двумя формами: полная:

Type <имя типа> = array [<тип индекса 1>] of array [<тип индекса 2>] ofarray

[<тип индекса n>] of <тип элементов>; сокращенное:

Читать  ПРАКТИЧЕСКАЯ РАБОТА №8 – Применение циклов к решению задач

Type <имя типа> = array [<тип индекса 1>, <тип индекса 2> … <тип индекса n>] of

<Тип элементов>;

Оператор присваивания можно применять к массиву как к единому целому.  Для этого необходимо, чтобы массивы были одного и того же типа. В результате выполнения оператора а = b все значения элементов массива b будут присвоены соответствующим элементам массива а.

Так, для описанных выше переменных правильным является оператор аr2 [3] = а (поскольку аr2 [3] является массив того же типа, что и массив а).Оператор присваивания с = а неправильный, поскольку массивы а и С не эквивалентных типов.

Доступ к элементам массива.Элементы массива изображаются в программе с помощью имени элемента массива, который состоит из имени массива и индекса в квадратных скобках. Для приведенного выше примера color [green] — байтовая величина, matrix [4,7] — действительная величина, аr2 [10] — величина типа аr.Для многомерных массивов допускается такая форма записи доступа к элементу: matrix [1] [2], аr2 [4] [0] — соответственно то же, что и matrix [1,2], аr2 [4,0].

Констант массив описывается так же, как и обычный массив, но после описания базового типа ставится знак =, по которому в круглых скобках перечислены через запятую значения элементов массива.

Например,

Type rgb = (red, green, blue)

Const color: array [1..4] of rgb = (red, green, blue, green)

table: array [1..5] of Real = (0,0.5,1,1.5, -8e10)

Многомерные констант-массивы описываются аналогично, причем каждая размерность задается в круглых скобках.

Например,

Type rectangle = array [1..4,1..2] of Integer;

Const box: rectangle = ((0,0), (0,1), (5,1), (5,0));

Задавать символьные констант-массивы можно двумя способами:

в) изучить правила использования приемов программирования в структурах с вложенными циклами;

г) разработать алгоритм решения задач своего варианта, записав их в виде блок-схем;

д) обеспечить в программе вывода комментариев и естественное завершение программы в случаях возможного зацикливания и зависания программы.Двумерные массивы должны выводиться в виде матриц.

 

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

Двумерный массив в Паскале трактуется как одномерный массив, тип элементов которого также является массивом (массив массивов).Положение элементов в двумерных массивах Паскаля описывается двумя индексами.Их можно представить в виде прямоугольной таблицы или матрицы.

Рассмотрим двумерный массив размерностью 3 * 3, то есть в нем будет три строки, а в каждом ряду по три элемента:

 

Каждый элемент имеет свой номер, как в одномерных массивов, но номер уже состоит из двух цифр — номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца.

Существует несколько способов объявления двумерного массива

Описание двумерного массива

 

Type

Vector = array [1 .. 5] of <тип_елементив>; Matrix = array [1 .. 10] of vector;

Var m: matrix;

 

Двумерный массив m, состоящий из 10 строк, в каждой из которых 5 столбцов.При этом к каждому и-го строке можно обращаться m [i], а к каждому j-го элемента внутри и-го строки — m [i, j].

Определение типов для двумерных массивов можно задавать и в одной строке:

 

 

 

или:

Type

Matrix = array [1..5] of array [1..10] of <тип элементов>;

 

type

matrix = array [1..5, 1..10] of <тип элементов>;

 

Единую действие, которое можно осуществить над однотипными массивами в целом — это присваивание.То есть, если в программе у нас описаны две матрицы одного типа, например,

Читать  Практическая работа №3 – Введение и вывод данных с помощью элементов управления

 

Type

matrix = array [1 .. 5, 1 .. 10] of integer; Var

a, b: matrix;

то в ходе выполнения программы можно присвоить матрицы a значение матрицы b (a = b).Все остальные действия выполняются поэлементно, при этом над элементами можно выполнять все допустимые операции, которые определены для типа данных элементов массива. Это означает, что если массив состоит из целых чисел, то над его элементами можно выполнять операции, определенные для целых чисел, если же массив состоит из символов, то к ним применимы операции, определенные для работы с символами.

 

 

Введение двумерного массива.

Для последовательного ввода элементов одномерного массива мы использовали цикл for, в котором меняли значение индекса с 1-го до последнего.Но положение элемента в двумерном массиве определяется двумя индексами: номером строки и номером столбца.Это означает, что нужно последовательно менять номер строки с 1-й до последнего и в каждой строке перебирать элементы столбцов с 1-го до последнего. Значит, нам нужно два цикла for, причем один из них будет вложен в другой.

Пример программы ввода двумерного массива с клавиатуры

 

type

matrix = array [1..5, 1..10] of integer;

Var

a,: matrix;

и, j: integer; {Индексы массива}

begin

for i: = 1 to 5 do {цикл для переборки всех строк}

for j = 1 to 10 do {переборка всех элементов строки по столбцам}

readln (a [i, j]); {Ввод с клавиатуриы элемента, который находится в и -ном строке и j -ом стовпбци}

 

Двумерный массив можно заполнить случайным образом, то есть использовать функцию

random (N).

Вывод двумерного массива на экран.

Вывод элементов двумерного массива осуществляется последовательно, необходимо напечатать элементы каждой строки и каждого столбца.При этом хотелось бы, чтобы элементы, стоящие в одной строке, печатались рядом, то есть в строку, а элементы столбца располагались один под другим.

Пример программы вывода двумерного массива

 

for i: = 1 to 5 do { цикл для переборки всех строк} begin

for j = 1 to 10 do {переборка всех элементов строки по столбцам}

write (a [i, j]: 4); {Печать элементов, которые находятся в и -ном строке матрицы в одном экранном строке, при этом для вывода кажный элемента отводится 4 позиции}

writeln; {Перед тем, как изменить номер строки в матрице, необходимо перевести курсор на начало нового экранного строки}

end;

 

3.3 контрольные вопрос

1. задания одномерного массива.

2. Формы задания многомерного массива.

3. Доступ к элементам массива.

4. Тип индекса массива.

5. Тип элементов массива.

6. перечислен тип данных.

7. диапазонный тип данных.

 

вариант 1

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

1. Заполните одномерный массив произведением элементов строк заданного двумерного массива и выведите его на экран. Найдите сумму этих произведений.

2. Заполните одномерный массив положительными элементами, расположенными на главной диагонали заданного квадратного массива. Выведите полученный массив на экран и найдите произведение элементов ..

3. Дано двумерный квадратный массив. Вычислить сумму тех его элементов, расположенных на главной диагонали и выше нее, которые превосходят по величине все элементы, расположенные ниже главной диагонали. Если на главной диагонали и выше нее нет элементов с указанными свойством, то выдайте соответствующее сообщение.Используйте подпрограммы для решения каждой задания.

вариант 2

1. Дано двумерный квадратный массив. Найти номера строк, все элементы которых равны нулю.

Читать  Пример перевода из десятичной системы в двоичную на Паскаль

2. Дано двумерный квадратный массив. Найти номера строк, элементы в которых одинаковые между собой.

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

вариант 3

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

2. Заполнить квадратный двумерный массив таким образом, чтобы на главной диагонали были расположены числа от N до 1, под главной диагональю нули, а над главной диагональю по строкам числа в порядке возрастания от заданного.

 

3. Заполнить квадратный двумерный массив по следующему правилу: элементы главной диагонали равны 1, ниже главной диагонали — 0, а выше — суммы индексов.

вариант 4

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

2. Заполните двумерный массив с клавиатуры только числами кратными трем, предусмотрите защиту элементов этого массива от неправильного ввода и найдите сумму тех элементов массива, которые без остатка делятся на 9.

3. Для настоящего двумерного массива укажите индексы тех элементов, сумма которых равна заданой числу (если таковые имеются). Если таких элементов нет, вывести об этом сообщения.

вариант 5

1. Дано двумерный массив. Найдите сумму элементов столбца и строки массива, на пересечении которых находится нулевой элемент.

2. Составить программу, записывает все положительные элементы двумерного массива А в одномерный массив В, а отрицательные — в одномерный массив С. Вывести полученные массивы на экран.

3. Дано двумерный массив. Сформировать одномерный массив путем деления положительных элементов заданой таблицы на число К. Вывести полученный массив на экран.

вариант 6

1. Вычислите сумму элементов, находящихся на пересечении текущей строки и двух диагоналей двумерного квадратного массива, и запишите их в одномерный массив.Найдите самый большой из этих элементов. (Элементами и-й строки, лежащих на диагоналях, есть a [i, j] и a [i, n-j + 1]).

2. Дано двумерный массив. Заполнить одномерный массив суммами элементов строк, вывести полученную информацию на экран и номера строк, в которых сумма наименьшая.

3. Дано двумерный массив. Заполнить одномерный массив наименьшими значениями элементов строк, вывести полученную информацию на экран и номера строк, в которых значение маленькие.

вариант 7

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

2. Дано двумерный квадратный массив. В каждой строке двумерного массива наибольший элемент и элемент главной диагонали поменять местами, а их среднее арифметическое занести в одномерный массив. вывести на экран полученный массив и среднее арифметическое его элементов.

3. Дано двумерный квадратный массив. В каждой строке двумерного массива наибольший элемент поместить на место первого элемента массива, а наименьший элементы — на место последнего. Создать одномерный массив, элементы которого является суммой этих элементов. Вывести на экран полученный массив и сумму его элементов.

вариант 8

1. Определить минимальный элемент двумерного массива. Напечатать номер строки, содержащей максимальное количество минимальных элементов, если таковые есть.

 

2. В двумерном массиве Х все числа разные. В каждой строке выбирается минимальный элемент, затем среди этих чисел выбирается максимальное. Напечатать номер строки массива Х, в котором находится избранное число.

 

3. Дано двумерный массив. Найти наибольшее из значений элементов первого и последнего строки.

Читать  Практическая работа №6. Одномерные массивы

 

вариант 9

1. дано двумерный массив. найдите сумму крупнейших значений элементов его строк.

 

2. В двумерном массиве поменяйте местами первую строку и строку в котором находится первый нулевой элемент.

 

3. В двумерном массиве переставьте строки следующим образом: первый с последним, второй с предпоследним и так далее.Если строк нечетное число, то средний остается неизменным.

 

вариант 10

 

1. Дано двумерный массив А. Расставить его столбцы в таком порядке:

а) последний, предпоследний …, второй, первый;

б) первый, последний, второй, предпоследний, третий …

 

2. Дано двумерный массив. Начиная с первой строки, сдвинуть все строки на два вниз, а последние перенесите на место первых двух строк.

3. Дано двумерный массив вещественных чисел размерностью [1 .. N, 1 .. N]. Провести сортировку столбцов по убыванию элементов последней строки. Вычислить сумму элементов расположенных на диагоналях полученной матрицы. Сортировка провести методом прямого выбора. Вывести на экран начальный и полученный массивы в виде матрицы.

 

 

вариант 11

1. дано двумерный массив действительных цифр размерностью [1 .. N, 1 .. N]. провести сортировка столбцов по возрастанию элементов первой строки.Вычислить среднее арифметическое элементов расположенных по периметру полученной матрицы. Сортировка провести методом прямого выбора. Вывести на экран начальный и полученный массивы в виде матрицы.

 

2. Дано двумерный массив, содержащий 4 строки и 5 столбцов. Элементами массива являются целые числа. Упорядочить массив по возрастанию элементов 3-го столбца.

 

3. Дано двумерный массив. Найти наибольший и наименьший элементы массива и, чередуя, заполнить ими одномерный массив заданного размерности.

 

 

Варианты дополнительных задач Вариант 1

Задача1: Умножить матрицу А МхN, на вектор R, с размерностью n по формуле:

n

a i j * r j

U i =

j 1, где i = 1,2, …. m, j = 1,2, …. n.

Указания на экран вывести предварительную матрицу А, вектор R (задать самостоятельно) и результирующий вектор U.

Задача2: Дано натуральное число n, целочисленных квадратная матрица A порядка n.Получить b 1 …. b n, где b i — это наименьшее из значений элементов, которые находятся в начале и — й строки матрицы до элемента, который относится к главной диагонали включительно.

Указания матрицу задавать самостоятельно.

 

вариант 2

Задача1 Найдите составить и вычесть две матрицы А и В с одинаковой размерностью m x n по формулам:

c ij = a ij + b ij; d ij = a ij b ij; где i = 1,2, …. m, j = 1,2, …. n.

Указания на экран вывести предыдущие матрицы (задавать самостоятельно) и результирующие.Задача2 Данная целочисленных квадратная матрица порядка 4.Найти наименьшее из значений элементов столбца, который обладает наибольшей суммой по модулю элементов. Если таких столбиков несколько, то взять первый из них.

Указания: предварительную матрицу задать самостоятельно.

 

вариант 3

Задача1: Написать программу транспонирования матрицы A = (a ij), где i = 1,2, … n, j = 1,2, … n для произвольного значения n.Операция транспонирования заключается в замене строк матрицы столбиками (и й строка заменяется на j-й столбец).

Указания на экран вывести предварительную матрицу и результирующую (предварительную матрицу задавать самостоятельно).

Задача2: Дано натуральное n, целочисленных квадратная матрица порядка n.Получить b 1 …. b n, где b i — это сумма элементов, которые находятся после первого отрицательного элемента в i — й строке (если все элементы строки неотъемлемые, то принять b i = 100).

Указания: предварительную матрицу задавать самостоятельно.

 

вариант 4

Задача1: Умножить матрицу А с размерностью m x n на матрицу В с размерностью n x l по формуле

Читать  Практическая работа №16 – Научиться использовать графические процедуры и функции

n

(a ki

* B ij)

с kj = i 1, где j = 1,2, … l, k = 1,2, … m.

Полученная матрица имеет размерность m x l.

Указания на экран вывести матрицы А, В (задавать самостоятельно) и С.

Задача2 Данная действительно матрица с размерностью m x n.Получить последовательность b 1 … b n, где b i — это наибольшее из значений элементов и -й строки.

Указания: предварительную матрицу задавать самостоятельно.

 

вариант 5

Задача1 В заданной действительной матрицы с размерностью 3 х 4 поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащий элемент с наименьшим значением.Предполагается, что такие элементы едины.

Указания: предварительную матрицу задавать самостоятельно.

Задача2 Данная действительно матрица с размерностью m x n.Получить последовательность b 1 … b n, где b i — это произведение квадратов тех элементов и -й строки, модули которых принадлежат отрезку [1, 1.5].Указания: предварительную матрицу задавать самостоятельно.

 

вариант 6

Задача1: в данном действительной квадратной матрицы с размерностью n найти сумму элементов строки, в которой находится элемент с наименьшим значением.Предполагается, что такой элемент единственный.

Указания: предварительную матрицу задавать самостоятельно.

Задача2: данные действительно матрица с размерностью m x n.Получить последовательность b 1 …. b n, где b i

— это число отрицательных элементов в и-м строке.

Указания: предварительную матрицу задавать самостоятельно.

 

вариант 7

Задача 1: Написать программу для арифметических действий над матрицей A = [a ij] в зависимости от нажатой клавиши:

A x,

A A x,

A * x,

если если если

 ‘;

 ‘;

‘*’.

 

 

i = 1,2,3 … n; j = 1,2,3 … m.

Указания m, n и начальную матрицу задать самостоятельно, x — вводить с клавиатуры при нажатии ‘+’, ‘-‘ или ‘*’.

Задача 2: Заданное натуральное число k, целочисленных матрица порядка k.Получить вектор столбец c 1, c 2 … c i … c k, где с i -сумма отрицательных элементов i -й строки.

Указания: значение k и начальную матрицу задать самостоятельно.

вариант 8

Задача 1: Заданный двумерный массив А = (a ij), где i = 1,2 … k, j = 1,2 … f, элементами которого являются целые числа, состоящие из любой количества цифр.Написать программу для составления матрицы, элементами которой будут числа, равные количества цифр в одноименной ячейке в массиве А.

Указания: начальную матрицу задать самостоятельно, на экран вывести начальную и результирующую матрицы.

Задача 2: упорядочить последовательность с 1 … с n, состоящая из действительных чисел в порядке убывания.Дробные числа округлить до ближайшего целого числа.

Указания: начальную последовательность задать самостоятельно, на экран вывести начальную и результирующую последовательность.

 

вариант 9

Задача 1: Заданный двумерный массив А = (a ij), где i = 1,2 … n, j = 1,2 … m,.Сформировать одномерный массив B, состоящий из отрицательных элементов массива А, и найти их сумму.Задача 2: Заданное натуральное число k, целочисленный одномерный массив порядке k.

Поменять в массиве максимальный элемент с первым, а минимальный с последним.

Указания Значение k и начальный массив задать самостоятельно.

 

вариант 10

Задача 1: Заданный двумерный массив А = (a ij), где i = 1,2 … n, j = 1,2 … m, элементами которого являются целые числа.Сортировать информацию в массиве в порядке возрастания.

указания

1. Начальный массив задать самостоятельно.

2. На экран вывести начальный и результирующий массивы.

Задача 2: В одномерном массиве u 1 … u n, состоящий из величин напряжений источников питания, найти количество стандартных величин напряжений: 1.5В, 3В, 4.5В, 6В, 9В, 12В. Указания начальный массив задать самостоятельно.

 

[Всего голосов: 4    Средний: 5/5]