Основы алгоритмизации и программирования. Часть вторая. Типовые алгоритмы обработки массивов. Асламова В.С - 9 стр.

UptoLike

Составители: 

17
{Транспонирование квадратной матрицы}
For i:=1 to n–1 do
For j:=i+1 to n do begin
C:= A[ i, j ];
A[ i, j ]:= A[ j, i ];
A[ j, i ]:=C end;
{Печать транспонированной матрицы}
For i:=1 to n do begin
For j:=1 to n do write(A[ i, j ]:3:0);
writeln; {Перевод курсора перед новой
строкой}
end;
End.
Пример 8 Транспонирование прямоугольной
матрицы
Требуется транспонировать матрицу А
размером n×m. Для реализации программы
воспользуемся вспомогательной матрицей
размером m×n.
Программа 8
Var i, j, n, m: byte;
A: array[1 . . 20, 1 . . 10] of real;
B: array[1 . . 10, 1 . . 20] of real;
Begin writeln('Введите размер матрицы n, m');
readln(n,m);
{Ввод исходной матрицы}
For i:=1 to n do
For j:=1 to m do Read(A[ i, j ]);
{Транспонирование матрицы}
For i:=1 to n do
For j:=1 to m do B[ j, i ]:= A[ i, j ]
НАЧАЛО
КОНЕЦ
B[ j, i]:= A[ i, j];
Печать
Ввод n, m
i:=1, n
j:=1, m
Печать
Ввод A[ i, j]
i:=1, n
j:=1, m
i:=1, n
j:=1, m
Печать
Вывод B[ i, j]
Р
исунок 10. Блок-схема
программы 8
18
{Печать транспонированной матрицы}
For i:=1 to m do begin
For j:=1 to n do write(B[ i, j ]:3:0);
writeln; end;
End.
Пример 9 Умножение матрицы на скаляр
Требуется увеличить все элементы
матрицы А размером n×m в k раз. В начале
задаем размеры матрицы n×m, а затем
запрашиваем число, в которое элементы
матрицы должны быть увеличены.
Реализуйте данный пример в
центральном блоке программы.
C
[]
i, j : = A
[]
i, j * K,
где i = 1, … n; j = 1, … m.
Пример 10 Умножение матрицы на вектор
Требуется умножить матрицу А
размером n×m на вектор. Чтобы умножить
матрицу на вектор надо рассматривать вектор
как вектор-столбец. В начале задаем размеры матрицы n×m, а затем
запрашиваем вектор В размером m×1, на который матрица должн
ы быть
умножена. В итоге получаем вектор-столбец С размером 1.
A =
12–1 2
30 4 2
23 3 5
B =
–1
2
1
3
C =
8
–5
22
НАЧАЛО
КОНЕЦ
A[ i, j]:= A[ i, j]*k;
Печать
Ввод k, n ,m
i:=1, n
j:=1, m
Ввод
матрицы
Печать
матрицы
Р
исунок 11. Блок-
схема примера 9
       НАЧАЛО              {Транспонирование квадратной матрицы}
                                                                                       {Печать транспонированной матрицы}
       Печать                  For i:=1 to n–1 do
                                                                                            For i:=1 to m do begin
     Ввод n, m                      For j:=i+1 to n do begin
                                                                                              For j:=1 to n do write(B[ i, j ]:3:0);
          i:=1, n                     C:= A[ i, j ];
                                                                                            writeln;    end;
                                         A[ i, j ]:= A[ j, i ];
                                                                                       End.
         j:=1, m                      A[ j, i ]:=C           end;
                                                                                       Пример 9 Умножение матрицы на скаляр
                           {Печать транспонированной матрицы}
       Печать                                                                                                                  Требуется         увеличить      все    элементы
                                    For i:=1 to n do begin                                        НАЧАЛО
     Ввод A[ i, j]
                                      For j:=1 to n do write(A[ i, j ]:3:0);                      Печать               матрицы А размером n×m в k раз. В начале
                                                                                               Ввод k, n ,m
                                 writeln;   {Перевод курсора перед новой                                               задаем      размеры        матрицы      n×m,    а     затем
          i:=1, n          строкой}                                                                 Ввод
                                                                                                   матрицы             запрашиваем          число,    в      которое   элементы
                                                        end;
                                                                                                                       матрицы должны быть увеличены.
         j:=1, m           End.                                                                     i:=1, n

                           Пример 8 Транспонирование прямоугольной                                                             Реализуйте            данный         пример      в
    B[ j, i]:= A[ i, j];
                           матрицы                                                                  j:=1, m            центральном блоке программы.

                                 Требуется транспонировать матрицу А                          A[ i, j]:= A[ i, j]*k;           C[ i, j ]    : = A[ i, j ] * K,
          i:=1, n          размером n×m. Для реализации программы
                           воспользуемся   вспомогательной   матрицей                                                          где i = 1,        n; j = 1,     m.
                           размером m×n.                                                           Печать
          j:=1, m                                                                                  матрицы
                           Программа 8                                                                                 Пример 10 Умножение матрицы на вектор
                                                                                                       КОНЕЦ
        Печать             Var i, j, n, m: byte;
      Вывод B[ i, j]
                                A: array[1 . . 20, 1 . . 10] of real;                   Рисунок 11. Блок-             Требуется    умножить    матрицу    А
                                   B: array[1 . . 10, 1 . . 20] of real;                схема примера №9        размером n×m на вектор. Чтобы умножить
          КОНЕЦ            Begin       writeln('Введите размер матрицы n, m');                                  матрицу на вектор надо рассматривать вектор
                                                                      readln(n,m);     как вектор-столбец. В начале задаем размеры матрицы n×m, а затем
                                                                                       запрашиваем вектор В размером m×1, на который матрица должны быть
Рисунок 10. Блок-схема     {Ввод исходной матрицы}
                                                                                       умножена. В итоге получаем вектор-столбец С размером n×1.
программы №8               For i:=1 to n do
                                                                                                                                            –1
                           For j:=1 to m do Read(A[ i, j ]);
                                                                                                     ⎛ 1 2 –1 2 ⎞                    ⎛           ⎞         ⎛ 8 ⎞
                           {Транспонирование матрицы}
                                                                                                 A = ⎜ 3 0 4 –2 ⎟                 B=
                                                                                                                                     ⎜      2    ⎟     C = ⎜ –5 ⎟
                                    For i:=1 to n do                                                 ⎜
                                                                                                     ⎝2 3 3 5 ⎠
                                                                                                                ⎟                    ⎜      1    ⎟         ⎜    ⎟
                                                                                                                                                           ⎝ 22 ⎠
                                         For j:=1 to m do B[ j, i ]:= A[ i, j ]                                                      ⎝      3    ⎠

                                                                                  17   18