Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Заполнение массива элементами




ВВЕДЕНИЕ

 

В методической разработке рассмотрен один из структурированных типов Турбо-Паскаль – массивы. Показаны способы описания массивов, заполнение массивов конкретными значениями, вывод массивов на экран. Особое внимание уделяется двумерным массивам – матрицам. Рассмотрены программы, которые позволяют производить следующие действия над матрицами: упорядочивать элементы матриц в строках или в столбцах по возрастанию или убыванию, удалять и менять местами строки или столбцы матриц, перемножать матрицы, получать матрицы заданного вида, переставлять блоки матриц, производить вычисления в матрицах.

В конце методической разработки приведены варианты домашнего задания. Прочитав текст задания на странице 21, легко заметить соответствия между пунктами задания и разделами методической разработки. Так, например, пункту 1 задания соответствуют примеры из раздела 2 (ЗАПОЛНЕНИЕ МАССИВА ЭЛЕМЕНТАМИ); примеры, подобные пункту 2 задания можно найти в разделе 4 (ДЕЙСТВИЯ НАД МАТРИЦАМИ) методического пособия и т.д. Поэтому, подробно изучив примеры данного методического пособия и пояснения к ним, не возникнет сложностей при выполнении домашнего задания.

 

ОПИСАНИЕ МАССИВОВ

 

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

Описание массива имеет следующий вид:

<имя типа>= ARRAY [<тип индексов>] OF <тип элементов>;

где ARRAY, OF – ключевые слова;

<имя типа> – любой правильный идентификатор;

<тип индексов> – используется любой порядковый тип, но обычно тип– диапазон, в котором задаются границы изменения индексов;

<тип элементов> – любой тип Турбо-Паскаля.

Пример: TYPE COLOR = (red, green, blue);

H = 0..20;

L = ARRAY [BYTE] OF BOOLEAN;

VAR A: ARRAY [COLOR] OF H;

B: L;

C: ARRAY [H] OF REAL;

Тип L связан с набором массивов с индексами типа BYTE и элементами типа BOOLEAN. Переменная А является массивом с индексами типа COLOR и элементами типа H. Переменная B является массивом типа L, то есть с индексами типа BYTE и элементами типа BOOLEAN. Переменная C является массивом с индексами типа 0..20 и элементами типа REAL.

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

Пример:

TYPE MAS=ARRAY [1..2] OF ARRAY [1..2] OF INTEGER;

Тип MAS связан с набором массивов с индексами типа 1..2 и элементами, являющимися в свою очередь массивами с индексами 1..2 и элементами типа INTEGER.

Тип MAS можно заменить следующим:

TYPE MAS = ARRAY [1..2, 1..2] OF INTEGER;

VAR D: MAS;

В данном случае переменная D является двумерным массивом. Массив D содержит 4 элемента целого типа.

Имя элемента массива содержит имя массива и индексное выражение, заключенное в квадратные скобки. Индексное выражение может быть любым порядковым выражением того же типа, что и тип индексов в описании массива. Для рассмотренных выше массивов возможно использование следующих имен элементов массивов: A [red]; B[40]; C[10]; D[1,2].

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

Пример: VAR E, F: ARRAY [1..10] OF REAL;

Для данного описания возможно следующее присваивание: F:=E;

После этого присваивания все 10 элементов массива F получат те же значения, что и в массиве E.

 

ЗАПОЛНЕНИЕ МАССИВА ЭЛЕМЕНТАМИ

 

Для ввода с клавиатуры конкретных значений элементов массивов используются процедуры READ и READLN.

Пример 1. Ввести с клавиатуры конкретные значения элементов заданного двумерного массива.

PROGRAM PR1;

TYPE MAS = ARRAY [1..2, 1..2] OF REAL;

VAR A: MAS;

i, j: INTEGER;

BEGIN

FOR i:=1 TO 2 DO

FOR j:=1 TO 2 DO BEGIN

WRITE ('A [ ',i,', ',j,' ] = ');

READLN (A[i, j]);

END;

END.

Пояснения к программе: В качестве типа элементов двумерного массива A используется вещественный тип, а в качестве типа индексов массива A используется тип-диапазон, границами которого являются целые числа. Такое описание соответствует структуре матрицы.

Матрицей называется некоторая прямоугольная таблица, состоящая из элементов, которые организованы в строки и столбцы. Можно принять, что первый индекс массива A определяет количество строк, а второй – количество столбцов. Таким образом, массив A соответствует матрице размера (2*2).

Пример 2. Заполнить матрицу A размера (6*6) элементами, образованными по закону .

PROGRAM PR2;

VAR A: ARRAY [1..6, 1..6] OF REAL;

i, j: INTEGER;

BEGIN

WRITELN (' матрица А ');

FOR i:=1 TO 6 DO BEGIN

FOR j:=1 TO 6 DO BEGIN

А[i, j]:=SQRT(i)+SIN(j)/COS(j);

WRITE (A[i, j]:7:1);

END;

WRITELN;

END;

END.

Пояснения к программе: В данной программе каждый матрицы A определяется в соответствии с заданной формулой. Элементы матрицы выводятся на экран в виде прямоугольной таблицы.

 

ВЫВОД МАССИВОВ НА ЭКРАН

 

Для вывода массивов на экран используют процедуры WRITE и WRITELN.

Пример 3. Вывести матрицу A размера (6*6) на экран. При этом будем предполагать, что элементы матрицы A уже заданы (способы задания матриц приведены в примерах 1–2).

PROGRAM PR3;

VAR A:ARRAY [1..6,1..6] OF REAL;

i, j: INTEGER;

BEGIN

WRITELN (' матрица А ');

FOR i:=1 TO 6 DO BEGIN

FOR j:=1 TO 6 DO WRITE (A[i, j]:7:1);

WRITELN;

END;

END.

Пояснения к программе: Элементы матрицы A выводятся на экран в виде прямоугольной таблицы. Расстояние между столбцами матрицы задается форматом вывода элементов A[i, j].

После выполнения каждого пункта задания, текст которого приведен на странице 19, необходимо осуществлять вывод матрицы на экран. Использование процедуры вывода матрицы на экран позволит уменьшить объем программы и сделать ее более наглядной. Рассмотрим пример.

Пример 4. Получить матрицу A(7*6), образованную по закону и вывести ее на экран, используя подпрограмму.

PROGRAM PR4;

TYPE MAS = ARRAY [1..7, 1..6] OF REAL;

VAR A: MAS;

i, j: INTEGER;

PROCEDURE W (ms, ns: INTEGER; AS: MAS);

BEGIN

FOR i:=1 TO ms DO BEGIN

FOR j:=1 TO ns DO WRITE (AS[i, j]:7:1);

WRITELN;

END;

END;

BEGIN

FOR i:=1 TO 7 DO

FOR j:=1 TO 6 DO A[i, j]:=i + SIN(j)/COS(j);

WRITELN (' матрица A ');

W(7, 6, A);

END.

Пояснения к программе: В используемой процедуре W формальными параметрами являются ms, ns – переменные, определяющие количество строк и столбцов выводимой матрицы соответственно; AS – переменная, определяющая имя выводимой матрицы.

 

ДЕЙСТВИЯ НАД МАТРИЦАМИ

 

Одним из пунктов задания является выполнение каких-либо преобразований над матрицами. Такими преобразованиями могут быть: упорядочивание элементов матрицы в строках или в столбцах по возрастанию или убыванию; удаление строк или столбцов; смена положения строк или столбцов матрицы. Рассмотрим примеры.

Пример 5. Упорядочить элементы в строках заданной матрицы B размера (6*6) по убыванию.

PROGRAM PR5;

VAR B: ARRAY [1..6, 1..6] OF REAL;

i, j, k: INTEGER;

bk: REAL;

BEGIN

{Ввести элементы матрицы В (способы задания матриц приведены в примерах 1, 2)}

FOR i:=1 TO 6 DO

FOR j:=1 TO 6 DO

FOR k:=1 TO 6 DO

IF B[i, j]>B[i, k] THEN BEGIN bk:=B[i, j];

B[i, j]:=B[i, k];

B[i, k]:=bk;

END;

{Вывод на экран матрицы B (смотрите примеры 3, 4)};

END.

Пояснения к программе: В этом примере используется сортировка обменом. Первый цикл с параметром i фиксирует строку матрицы В. В каждой строке, последовательно сравниваются пары соседних элементов и при выполнении условия оператора IF, эти элементы меняются местами. Тем самым наибольший элемент переставляется в начало строки.

Если необходимо упорядочить элементы в столбцах, то первый цикл должен быть с параметром j, то есть сначала фиксируется столбец матрицы.

Если необходимо упорядочить элементы в строках или в столбцах по возрастанию, то нужно поменять условие оператора IF, то есть вместо операции сравнения > (больше), использовать – < (меньше).

Пример 6. Удалить столбец, содержащий максимальный элемент матрицы A размера (6*7). Результат данного действия занести в матрицу B.

PROGRAM PR6;

VAR A: ARRAY [1..6, 1..7] OF REAL;

B: ARRAY [1..6, 1..6] OF REAL;

i, j, jmax: INTEGER;

max: REAL;

BEGIN

{Ввести элементы матрицы A (способы задания матриц приведены в примерах 1, 2)}

max:=A[1, 1];

jmax:=1;

FOR i:=1 TO 6 DO

FOR j:=1 TO 7 DO

IF A[i, j]>max THEN BEGIN max:=A[i, j];

jmax:=j;

END;

FOR i:=1 TO 6 DO

FOR j:=1 TO 6 DO

IF j >= jmax THEN B[i, j]:=A[i, j+1]

ELSE B[i, j]:=A[i, j];

{Вывод на экран матрицы B (см. примеры 3, 4)};

END.

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

Пример 7. Поменять местами строки с максимальным и минимальным элементами матрицы A размера (6*6). Результат данного действия занести в матрицу B.

PROGRAM PR7;

TYPE Stroka = ARRAY [1..6] OF REAL;

VAR A,B: ARRAY [1..6] OF Stroka;

Bs: Stroka;

i, j, imax, imin: INTEGER;

max, min: REAL;

BEGIN

{Ввести элементы матрицы A (способы задания матриц приведены в примерах 1, 2)}

max:=A[1, 1];

imax:=1;

min:=A[1, 1];

imin:=1;

FOR i:=1 TO 6 DO

FOR j:=1 TO 6 DO BEGIN

IF A[i, j]>max THEN BEGIN max:=A[i, j];

imax:=i;

END;

IF A[i, j]<min THEN BEGIN min:=A[i, j];

imin:=i;

END;

END;

Bs:=A[imin];

A[imin]:=A[imax];

A[imax]:=Bs;

B:=A;

{Вывод на экран матрицы B (см. примеры 3, 4)};

END.

Пояснения к программе: В данном примере задается тип Stroka содержащий 6 элементов типа REAL. Переменные A,B являются массивами, содержащие 6 элементов типа Stroka. Определяются строки, в которых находятся максимальный и минимальный элементы матрицы А и переменным imax и imin присваиваются номера этих строк. Используя дополнительную переменную Bs типа Stroka, в матрице А меняются местами строки с максимальным и минимальным элементами. Затем элементам матрицы В присваиваются соответствующие элементы матрицы А.

 





Поделиться с друзьями:


Дата добавления: 2016-09-06; Мы поможем в написании ваших работ!; просмотров: 1072 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Неосмысленная жизнь не стоит того, чтобы жить. © Сократ
==> читать все изречения...

2347 - | 2058 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.