Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по информатике.DOC
Скачиваний:
29
Добавлен:
02.05.2014
Размер:
1.68 Mб
Скачать

Interface

{-----------------------------------------------------------------}

Type M = array[1..10, 1..10] of real;

M1 = array[1..10] of real;

Procedure MAT_1(a:M; var b:M; n: word);

Procedure MAT_2(a:M; var b:M1; n: word);

{-----------------------------------------------------------------}

Implementation

{-----------------------------------------------------------------}

Procedure MAT_1; {создание матрицы "B", транспонированной к "A"}

var i, j: word;

begin for i:=1 to N do for j:=1 to N do b[i,j]:=a[j,i]

end;

{-----------------------------------------------------------------}

Procedure MAT_2; {расчет квадратов диагональных элементов}

var i, j: word;

begin for i:=1 to N do b[i]:=a[i,i]*a[i,i]

end;

{-----------------------------------------------------------------}

END.

65

В основной программе PR_1 подключается модуль MATR_1 и используются процедуры MAT_1 и MAT_2.

Program PR_1;

Uses MATR_1;

Type MM = M; MM1 = M1;

Var a1,a2,a3: MM; b1,b2: MM1; i,j,n: word;

Begin Writeln('введите размерность матрицы N='); Readln(n);

Randomize;

for i:=1 to n do for j:=1 to n do a1[i,j]:=random(20)+1;

MAT_1(a1, a2, n); MAT_1(a2, a3, n);

MAT_2(a1, b1, n); MAT_2(a2, b2, n) end.

В результате двойного транспонирования исходной матрицы "a1" (из "a1" в "a2", из "a2" в "a3") получается матрица "a3" тождественная "a1" .

Матрицы "b1" и "b2" содержат квадраты диагональных элементов матриц "a1" и "a2". Типы массивов фактических параметров должны соответствовать типам массивов формальных параметров, описанных в модуле MATR_1. Можно использовать имена типов, заданные в интерфейсной части модуля или задавать новые имена типов.

Практическое задание N 1. 33

1. Написать и отладить программы с использованием модуля, содержащего процедуры расчета элементов линейных массивов "В", являющихся:

1_1. суммой элементов в столбцах матрицы "A" (NxM),

1_2. суммой элементов в строках матрицы "A" (NxM),

1_3. наибольшими элементами в строках матрицы "A" (NxM),

1_4. наименьшими элементами в строках матрицы "A" (NxM).

1_5. наибольшими элементами в столбцах матрицы "A" (NxM),

1_6. наименьшими элементами в столбцах матрицы "A" (NxM). N=30, M=10.

Значения элементов матрицы "A" определяются в основной программе функцией Random(10), N=15, M=6. Программа выводит на экран значения элементов массивов "A" и "В".

2. Составить модуль, содержащий процедуры или функции для расчета:

2_1. скалярного произведения двух векторов "A" и "B" длиной "N", т. е.

С= A * B = a1*b1 + a2*b2 + ... + aN*bN, где N<=100.

2_2. суммирования двух матриц "A" и "B" размером (МxN), N<=30, M<=30, т. е.

С= A + B , где c11= a11+ b11; b12 = a12+ b12; и т. д. cMN = aMN+ bMN.

2_3. умножения двух матриц "A" (МxN) и "B" (NxK) , N<=30, K <=30, M<=30, т. е. С= A * B , где cij= ai1* b1j+ ai2* b2j + ... + aiN* bNj ; и т. д.

Элемент с индексом "i, j" новой матрицы "С" (МхК) получается как сумма произведений элементов i -ой строки матрицы "A" на соответствующие элементы j -ого столбца матрицы "В".

Значения элементов матрицы "A" определяются в основной программе функцией Random(200), М=5, N=10. Программа выводит на экран массивы "A", "В" и "С".

66