Преобразование матриц
Рефераты >> Программирование и компьютеры >> Преобразование матриц

{Программист: Ходыкина Е.Е. группа 215 }

{Проверил: Москвитина О.А. }

Program Kyrsac;

Const

Nmax = 10; {Максимальный размер массива}

Type

Matrix = array [1 Nmax, 1 Nmax] of integer;

Massiv = array [1 Nmax] of integer;

Var

A, B, C, N, K, M, H: matrix;

Y, X: massiv;

i, j, z: integer;

{Процедура ввода элементов массива}

{Параметры: z - размер массива, А - массив}

Procedure Vvod (z: integer; Var A: matrix);

Var

i, j: integer;

Begin {vvod}

For i: = 1 to z do

For j: = 1 to z do

Begin {Ввод элементов}

Write ('[',i,',',j,']=');

Read (A [i, j]);

End; {Ввод элементов}

For i: = 1 to z do

Begin {Вывод элементов}

For j: = 1 to z do

Write (A [i,j]:5);

Writeln

End {Вывод элементов}

End; {vvod}

{Процедура вывода элементов матриц}

{Параметры: А, В - матрицы, z - размер}

Procedure Echo (z: integer; A: matrix);

Var

i, j:byte;

Begin {Echo}

For i: = 1 to z do

Begin

For j: = 1 to z do

Write (A [i,j]:5);

Writeln

End

End; {Echo}

{Процедура умножения матриц}

{Переменные: A, B - начальные массивы}

{C - массив результат, z - размер}

Procedure Ymn (A, B: matrix; z: integer; Var C: matrix);

Var

i, j, k, s: integer;

Begin {Ymn}

For i: = 1 to z do

For j: = 1 to z do

Begin

s: = 0;

For k: = 1 to z do

s: = s + A [i, k] * B [k, j];

C [i, j]: =s

End

End; {Ymn}

{Процедура транспонирования массивов}

{Переменные: А - начальный массив, В - массив результат}

Procedure Tran (A: matrix; z: integer; Var B: matrix);

Var

i, j: integer;

Begin {Tran}

For i: = 1 to z do

For j: = 1 to z do

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

End; {tran}

{Процедура умножения массива на скаляр}

{Переменные: А - Начальный массив, В - массив результат}

Procedure Skal (A: matrix; z: integer; Var B: matrix);

Var

i, j: integer;

Begin {Skal}

For i: = 1 to z do

For j: = 1 to z do

B [i, j]: = 2 * A [i, j]

End; {skal}

{Прочедура вычитания массивов}

{переменные: A,B - начальные массивы}

{C - массив результат, z - размер}

Procedure Vic (A, B: matrix; z: integer; Var C: matrix);

Var

i, j: integer;

Begin {Vic}

For i: = 1 to z do

For j: = 1 to z do

C [i, j]: = A [i, j] – B [i, j]

End; {Vic}

{Процедура формирования вектора из сумм элементов каждой строки}

{Переменные: A - начальный массив}

{B - массив результат, z - размер}

Procedure Sum (A: matrix; z: integer; Var B: massiv);

Var

i, j, s: integer;

Begin {Sum}

For i: = 1 to z do

Begin

s: = 0;

For j: = 1 to z do

s: = s + A [i, j];

B [i]: = s

End;

For i: = 1 to z do

Write (B [i]: 8)

End; {Sum}

{Процедура сортировки элементов массива по убыванию}

{Переменные: A - массив; z - размер}

Procedure Sort (z: integer; Var A: massiv);

Var

i, j, c: integer;

Begin {Sort}

For i: = 1 to (z – 1) do

Begin

c: = i;

For j: = i + 1 to z do

If A [i] < A [j] then

Begin

c: = A [i];

A [i]: = A [j];

A [j]: = c

End

End;

For i: = 1 to z do

Writeln (A [i]: 9)

End; {Sort}

Begin {kyrsac}

Writeln ('Введите размер матриц A, B, C: ');

Read (z);

Writeln;

Writeln ('Введите', z*z: 6, ' элементов для каждой матрицы: ');

Writeln ('Матрица A: ');

Vvod (z, A); {Процедура ввода элементов массива}

Writeln;

Writeln ('Матрица B: ');

Vvod (z, B); {Процедура ввода элементов массива}

Writeln;

Writeln ('Матрица C: ');

Vvod (z, C); {Процедура ввода элементов массива}

Writeln;

Writeln ('Результат умножения матриц С*А: ');

Ymn (C, A, z, N); {Процедура умножения матриц}

Echo (z, N); {Процедура вывода элементов матриц}

Writeln ('Результат транспонирования матрицы (С*А): ');

Tran (N, z, K); {Процедура транспонирования массивов}

Echo (z, K); {Процедура вывода элементов матриц}

Writeln ('Результат умножения матрицы В на 2: ');

Skal (B, z, M); {Процедура умножения массива на скаляр}

Echo (z, M); {Процедура вывода элементов матриц}

Vic (K, M, z, H); {Процедура вычитания массивов}

Writeln ('Полученный массив после преобразований: ');

Echo (z, H); {Процедура вывода элементов матриц}

Writeln;

Writeln ('Вектор сумм элементов каждой строки: ');

Sum (H, z, Y); {Процедура формирования вектора из сумм элементов каждой строки}

Writeln;

Writeln ('Сформированный вектор-столбец по убыванию: ');

Sort (z, Y); {Процедура сортировки элементов массива по убыванию}

Writeln

End. {Kyrsac}

7. Результат работы.

При запуске программы мы получаем следующий результат:

Введите размер матриц А, В, С: 2

Введите 4 элемента для каждой мотрицы:

Матрица А:

[1,1] = 1

[1,2] = 3

[2,1] = 2

[2,2] = 4

1 3

2 4

Матрица В:

[1,1] = 0

[1,2] = 3

[2,1] = 6

[2,2] = 4

0 3

6 4

Матрица С:

[1,1] = 5

[1,2] = 8

[2,1] = 7

[2,2] = 0

5 8

7 0

Результат умножения матриц С*А:

21 47

7 21

Результат транспонирования матрицы (С*А):

21 7

47 21

Результат умножения матрицы В на 2:

0 6

12 8

Полученный массив после преобразований:

21 1

35 13

Вектор сумм элементов каждой строки:

22 48

Сформированный вектор столбец по убыванию:

48

22

8. Инструкция пользователя.

Курсовая работа была выполнена на компьютере следующей конфигурации:

· Процессор Celeron 566 FCPGA;

· HDD 15.3Gb;

· SD-RAM 128Mb;

· Операционная система Microsoft Windows 98;

· Программа на жестком диске занимает память, размером 5Kb.

Программа находится:

A:\kyrsac.pas

Z:\215\Xodikina\kyrsac\kyrsac.pas

9. Результат отладки программы.

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

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

10. Заключение.

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

Поскольку первокурсники вряд ли имеют опыт написания курсовых работ, то я предложила бы им в I семестре сделать пробную курсовую работу с нетрудными заданиями, чтобы эта работа была ознакомительной, тогда во II ссеместре браться за серьёзную работу было бы легче.

11. Список литературы.

1. Алгоритмические языки и программирование 1-й семестр: Методические указания /РГРТА; Сост. Л.П. Коричнев, В.С. Новичков. Рязань, 2001. 68 с.


Страница: