Преобразование матрицРефераты >> Программирование и компьютеры >> Преобразование матриц
{Программист: Ходыкина Е.Е. группа 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 с.