Умножение матрицы на скаляр. Сложение и вычитание матриц. Умножение матриц. Транспонирование матриц, страница 4


                                                           4

                                                                j=I,(1),m

 


                                                           5

K=K+1

                                                           6  

                                                                Bk=Aij

 


 

 


                                                               7  

ВЫХОД

6.2. Пусть требуется сформировать вектор из максимальных элементов строк массива А размерами n x m. Для решения поставленной задачи необходимо выполнить следующие действия:

1)реализовать просмотр исходного массива по строкам;

2)в ходе просмотра каждой строки находить максимальный элемент;

3)по окончании просмотра каждой строки записывать найденный максимальный элемент в вектор.

Алгоритмы формирования вектора представлен на рис. 7. Здесь q и p - координаты максимального элемента строки матрицы, i - указатель номера строки матрицы, одновременно i используется для указания номера элемента вектора. Данный алгоритм представляет собой совокупность двух предыдущих алгоритмов: поиска максимального элемента (рис. 5) и развертывания матрицы в вектор (рис. 6). Отличия заключаются в том, что 1)поиск ведется не по всей матрице, а в каждой ее строке, поэтому установка начальных значений координат  q и p осуществляется внутри цикла по строке (блок 3); 2)не требуется дополнительная ячейка К для указания номера элемента в векторе, так как ее значение совпадает со значением указателя номера строки.

Аналогичным образом решаются и другие задачи, связанные с формированием вектора выходных значений.

Рис.7

Входные параметры:

Матрица А(n,m)

                                                    1

ВХОД

                                                    2

 


                                                        i=I,(1),n

                                                     3

                                                        p=I q=I 

 


                                                     4

                                                        j=I,(1),m  

                                                

 


-    5

                                                        Apq<Aij    

                                                                    

                                                    6           +

p=i  q=j

 


                                                    7 

Bi=Apq

 


                                                      8

                                                        ВЫХОД

Блок-схема алгоритма решения задачи

Программа решения задачи

PROGRAM KURSOV;

USES CRT;

TYPE

M=ARRAY[1..10,1..10] OF REAL;

VAR

I,J,N,L,N1,N2,N3:BYTE;

F,Q1,Q2:REAL;

A,B,C,P,K:M;

{Процедура ввода матриц}

PROCEDURE VVOD(N:BYTE;VAR MV:M);

VAR

R,Q:BYTE;

BEGIN

FOR R:=1 TO N DO

FOR Q:=1 TO N DO

MV[R,Q]:=RANDOM(20)/(RANDOM(9)+1)

END;

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

PROCEDURE VIVOD(N:BYTE;V:M);

VAR

I,J:BYTE;

BEGIN

WRITELN;

FOR I:=1 TO N DO

BEGIN

WRITE('¦');

FOR J:=1 TO N DO

WRITE(V[I,J]:7:2,' ');

WRITELN('¦')

END;

WRITELN

END;

{Функция вычисления элемента матрицы-произведения}

FUNCTION PROIZV(N,X,Y:BYTE;VAR M1,M2:M):REAL;

VAR

K:REAL;

BEGIN

K:=0;

FOR L:=1 TO N DO

K:=K+M1[X,L]*M2[L,Y];

PROIZV:=K

END;

{Основная программа}

BEGIN

CLRSCR;

WRITE('Введите размер матрицы N (N<=10) ');

READLN(N);

WRITE('Введите 2 произвольных числа Q1, Q2 ');

READLN (Q1,Q2);

VVOD(N,A);

VVOD(N,B);

VVOD(N,C);

WRITELN('Исходные матpицы:');

WRITE('Матpица A');

VIVOD(N,A);

WRITE('Матpица B');

VIVOD(N,B);