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);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.