Пример 3.3.
В заданной матрице A(N, M) поменять местами
строки с номерами P и Q
(1 <= P <= N, 1 <= Q <= N).
Тест
Данные
Результат
N=3 M=3 P=1 Q=3
Демонстрация
Школьный АЯ
алг Поменять местами строки (арг цел N, M, арг цел P, Q,
арг рез вещ таб А[1:N, 1:M] )
нач цел j, вещ Tmp
нц для j от 1 до M | цикл по элементам строк матрицы
Tmp:=A[P, j]; A[P, j]:=A[Q, j]; A[Q, j]:=Tmp
кц
кон
Исполнение алгоритма
j
Tmp
A[1,j]
A[3,j]
123
121
313
121
Блок-схема (фрагмент)
Turbo Pascal
Program Exchange;
Uses Crt;
Type Mas = Array [1..10, 1..10] of Real;
Var A : Mas;
N, M, P, Q, i, j : Integer;
Tmp : Real;
{--------------------------------------------------------------}
Procedure InputOutput(Var A:Mas); {описание процедуры ввода-вывода}
Begin
ClrScr;
Write('Количество строк - '); ReadLn(N);
Write('Количество столбцов - '); ReadLn(M);
For i := 1 to N do
For j := 1 to M do
begin Write('A[' , i , ', ' , j , '] = ? ');
Read(A[i, j])
end; WriteLn; WriteLn('Номера строк, которые нужно поменять местами :');
Write('P = '); ReadLn(P); Write('Q = '); ReadLn(Q); WriteLn; ClrScr; WriteLn('Исходная матрица : ' ) ;
For i := 1 to N do
begin
For j := 1 to M do Write(A[i, j] : 5 : 1);
WriteLn
end; WriteLn
End; { of InputOutput}
{--------------------------------------------------------}
Procedure Change(P, Q: Integer); {описание процедуры замены строк }
Begin
For j := 1 to M do
begin Tmp:=A[P, j]; A[P, j]:=A[Q, j]; A[Q, j]:=Tmp end;
End; { of Change}
{--------------------------------------------------------}
Procedure OutRes(Var A:Mas); {описание процедуры вывода результатов}
Begin
WriteLn('Матрица-результат :');
For i := 1 to N do
begin
For j := 1 to M do Write(A[i, j] : 5 : 1) ;
WriteLn
end; ReadLn
End; { of OutRes}
{--------------------------------------------------------}
BEGIN
InputOutput(A); {вызов процедуры ввода-вывода исходных данных}
Change(P, Q); {вызов процедуры замены строк }
OutRes(A) {вызов процедуры вывода результатов}
END.