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

UptoLike

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

15
находится в C, перешлем в An (An=C). Также поступим с элементами A2 и
An-1 и так далее, пока не дойдем до середины массива.
Последними элементами, которые нужно поменять местами, будут
A
n\2
и A
n
\2+1
, если nчетно, и A
n\2
и A
n
\2+2
, если nнечетно, то есть
цикл по i в общем случае можно организовать от i = 1 до n
\2.
Программа 6
Var i, n, m: byte;
C: integer;
A: array[1 . . 50] of integer;
begin write('Введите n<50');
readln(n);
for i:=1 to n do
writeln('Введите A',i);
readln(A[ i ]);
m:=n div 2;
for i:=1 to m do begin
C:= A[ i ];
A[ i ]:= A[n– i +1];
A[ i ]:=C
end;
Writeln('Инвертированный массив A');
For i:=1 to n do write(A[ i ]:6);
Writeln
End.
Р
исунок 8. Блок-схема
программы 6
НАЧАЛО
m:=n div 2
КОНЕЦ
Печать
Массив
П
ечать
Ввод n
П
ечать
Ввод A[ i ]
i:=1..n
i:=1..m
C:=A[ i ]
A
[ i ]:= A[n i +1]
A
[ i ]:=C
Печать
A[ i ]
i:=1..n
16
Типовые алгоритмы обработки матриц
Ввод, вывод и обработку матриц следует выполнять во вложенных
циклах. Параметры вложенных циклов должны обозначаться различными
идентификаторами.
О вложенных циклах мы уже говорили в главеВложенные циклы”.
Пример 7 Транспонирование квадратной
матрицы
Требуется транспонировать матрицу А
размером n×n. Результат новой матрицы
получить на месте старой. Пусть А=А[i, j]
размером n×m, матр
ица А
т
=А
т
[i, j] размером
m×n, называется транспонированной к А, если
А
т
[i, j]= А [j, i].
A =
123
456
789
A
т
=
147
258
369
Заметьте, что диагональные элементы у
матриц А и А
т
одни и те же. Следовательно,
транспонирование квадратной матрицы
сводится к перестановке остальных элементов
симметрично, относительно главной диагонали.
Для реализации программы воспользуемся
вспомогательной переменной С.
Программа 7
Var i, j, n: byte;
C: real;
A: array[1 . . 10, 1 . . 10] of real;
Begin writeln('Введите размер матрицы');
readln(n);
{Ввод исходной матрицы}
For i:=1 to n do
For j:=1 to n do Read(A[ i, j ]);
НАЧАЛО
КОНЕЦ
C:= A [ i, j];
A[ i, j]:= A [ j, i];
A[ j, i]:=C;
Печать
Ввод n
i:=1, n
j:=1, n
Печать
Ввод A[ i, j]
i:=1, n–1
j:=i+1, n
i:=1, n
j:=1, n
Печать
Вывод A[ i, j]
Р
исунок 9. Блок-схема
программы 7
 находится в C, перешлем в An (An=C). Также поступим с элементами A2 и
 An-1 и так далее, пока не дойдем до середины массива.                                        Типовые алгоритмы обработки матриц
       Последними элементами, которые нужно поменять местами, будут                  Ввод, вывод и обработку матриц следует выполнять во вложенных
 An\2 и An\2+1, если n – четно, и An\2 и An\2+2 , если n – нечетно, то есть    циклах. Параметры вложенных циклов должны обозначаться различными
 цикл по i в общем случае можно организовать от i = 1 до n\2.                  идентификаторами.
      НАЧАЛО            Программа 6                                                 О вложенных циклах мы уже говорили в главе “Вложенные циклы”.
                                                                                       НАЧАЛО               Пример 7 Транспонирование квадратной
       Печать           Var i, n, m: byte;
       Ввод n                                                                            Печать             матрицы
                               C: integer;                                              Ввод n
                                                                                                                    Требуется транспонировать матрицу А
        i:=1..n                     A: array[1 . . 50] of integer;                        i:=1, n           размером n×n. Результат новой матрицы
                            begin write('Введите n<50');                                                    получить на месте старой. Пусть А=А[i, j]
        Печать                                                                            j:=1, n           размером n×m, матрица Ат=Ат[i, j] размером
                                                  readln(n);                                                m×n, называется транспонированной к А, если
     Ввод A[ i ]
                        for i:=1 to n do                                                Печать              Ат[i, j]= А [j, i].
                                                                                      Ввод A[ i, j]
                               writeln('Введите A',i);                                                                ⎛ 1 2 3         ⎞      ⎛ 1 4 7          ⎞
      m:=n div 2
                                           readln(A[ i ]);                                                          A=⎜ 4 5 6         ⎟ Aт = ⎜ 2 5 8          ⎟
                                                                                         i:=1, n–1                    ⎜               ⎟      ⎜                ⎟
                               m:=n div 2;                                                                            ⎝7 8 9          ⎠      ⎝ 3 6 9          ⎠
        i:=1..m
                                                                                         j:=i+1, n
                                                                                                                  Заметьте, что диагональные элементы у
                        for i:=1 to m do begin
                                                                                                            матриц А и Ат одни и те же. Следовательно,
  C:=A[ i ]                    C:= A[ i ];                                            C:= A[ i, j];         транспонирование     квадратной     матрицы
  A[ i ]:= A[n– i +1]
                                 A[ i ]:= A[n– i +1];
                                                                                     A[ i, j]:= A[ j, i];   сводится к перестановке остальных элементов
  A[ i ]:=C                                                                            A[ j, i]:=C;         симметрично, относительно главной диагонали.
                               A[ i ]:=C                                                                    Для реализации программы воспользуемся
                                                                                                            вспомогательной переменной С.
                                           end;                                                             Программа 7
        Печать                                                                             i:=1, n
        Массив          Writeln('Инвертированный массив          A');                                       Var i, j, n: byte;
                                                                                                                    C: real;
                                      For i:=1 to n do write(A[ i ]:6);                    j:=1, n
                                                                                                                    A: array[1 . . 10, 1 . . 10] of real;
        i:=1..n
                                 Writeln                                                                    Begin writeln('Введите размер матрицы');
                                                                                         Печать
                        End.                                                          Вывод A[ i, j]                                           readln(n);
       Печать                                                                                               {Ввод исходной матрицы}
        A[ i ]                                                                                                   For i:=1 to n do
                                                                                           КОНЕЦ

                                                                                                                       For j:=1 to n do    Read(A[ i, j ]);
       КОНЕЦ                                                                    Рисунок 9. Блок-схема
                                                                                программы №7
Рисунок 8. Блок-схема
программы №6
                                                                          15   16