Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабРаб__6_Массивы.doc
Скачиваний:
0
Добавлен:
06.09.2019
Размер:
584.7 Кб
Скачать

Var a, b : vector_1;

Begin a : = b;

if a = b then WriteLn(‘ массивы a и b совпадают ‘) ;

if a <> b then WriteLn (‘массивы a и b не совпадают ‘);

С другой стороны, если задать следующие массивы:

Var a, b : array[1..5] of Integer;

C : array[1..5] of Integer;

то допустим следующий оператор: A := B;

Но оператор C := A; недопустим, несмотря на то, что структуры массивов C и A совпадают, так как данные массивы неидентичных типов.

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

Type

Dim2 = array[1..2] of integer ;

Dim432 = array[1..4,1..3] of Dim2 ;

Const

a : Dim2 = (0,3) ;

b : Dim432 = (((0,1), (0,4), (5,-7)),

((-2,1), (6,-3), (8,2)),

((3,0), (0,0), (0,4)),

((0,1), (2,4), (-1,2))) ;

Почти все операции с массивами требуют использования операторов цикла. К наиболее распространённым операциям относятся суммирование элементов массива и поиск наибольших (наименьших) значений элементов.

Вывод на печать групп элементов одномерного (двумерного) массива чаще всего осуществляется в виде строки (таблицы). При выводе отдельных элементов указывают их индексы. Например:

i := 3 ; j :=2 ; k := 5 ;

a[i,j,k] := 7.5 ;

WriteLn( ‘a[‘,i:1,’,’,j:1,’,’,k:1,’]=‘,a[i,j,k]:3:1) ;

В результате на экран будет выведено a[3,2,5] = 7.5 .

Задание 1. Выполнить примеры 1-4. Тексты программ сохранять в файлах под именами lab4_pr1.pas - lab4_pr4.pas

Пример 1

Создать два одномерных массива по правилам и образовать из них двумерный массив по правилу , где ; .

Решение.

  1. Анализ задачи.

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

  1. Тест для отладки программы.

, ,

;

, ,

;

, ,

.

  1. Блок-схема:

G

  1. Программа:

program Vector_Matrix;

Var {Описание переменных}

A : array[1..6] of real ;

B : array[3..7] of real ;

C : array[1..6,3..7] of real ;

I,j : Integer;

{ начало основного блока }

BEGIN

for i:= 1 to 6 do

for j := 3 to 7 do

begin

a[i] := exp(i*ln(2)) ; {Вычисление элементов массива A}

b[j] := sqr(j) ; {Вычисление элементов массива B}

c[i,j] := a[i] + b[j] ; {Вычисление элементов массива C}

end;

{Выводим массив A}

Write Ln('Массив A') ; for i:= 1 to 6 do

Write(a[i]:4:1,' ');

WriteLn ; {перевод курсора на следующую строку}

{Выводим массив B}

WriteLn('Массив B') ;

for j:= 3 to 7 do

Write(b[j]:4:1,' ') ;

WriteLn ; {перевод курсора на следующую строку}

{Выводим массив C}

WriteLn('Массив C') ;

for i:= 1 to 6 do

begin

for j := 3 to 7 do

Write(c[i,j]:5:1,' ') ;

WriteLn ; {перевод курсора на следующую строку}

end;

End.

5. Вид печати:

Массив A

2.0 4.0 8.0 16.0 32.0 64.0

Массив B

9.0 16.0 25.0 36.0 49.0

Массив C

11.0 18.0 27.0 38.0 51.0

13.0 20.0 29.0 40.0 53.0

17.0 24.0 33.0 44.0 57.0

25.0 32.0 41.0 52.0 65.0

41.0 48.0 57.0 68.0 81.0

73.0 80.0 89.0 100.0 113.0

Пример 2. Создать двумерный массив , где ; по правилу . Найти сумму наибольших элементов строк матрицы с четными номерами. Вывести на печать саму матрицу, номера строк, в которых производился поиск наибольших элементов, сами наибольшие элементы и окончательный ответ.

Решение.

  1. Анализ задачи.

Обозначим: Max – наибольший элемент в строке с четным номером, N_Max – номер столбца, в котором найден наибольший элемент, sum – сумма наибольших элементов строк матрицы с четными номерами. Для проверки чётности будем использовать функцию Odd(k), которая возвращает True, если k – нечётное число и False, если k – чётное число.

  1. Тест для отладки программы.

;

; ;

; ;

; ;

; .

Наибольший элемент будет .

3. Блок-схема:

4. Программа:

program Matr;

TYPE

Matrix=array [2..7,1..9] of real;

VAR

a : Matrix;

sum, Max : Real;

N_Max : Integer;