ВУЗ:
Составители:
Рубрика:
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, n1 ⎜ ⎟ ⎜ ⎟ 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
Страницы
- « первая
- ‹ предыдущая
- …
- 6
- 7
- 8
- 9
- 10
- …
- следующая ›
- последняя »