Пример 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]
|
1
2
3
|
1
2
1
|
3
1
3
|
1
2
1
|
|
Блок-схема (фрагмент)
|
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.
QBasic
CLS
INPUT "Количество строк - ", N
INPUT "Количество столбцов - ", M
DIM A(N, M) 'Резервирование памяти для матрицы
FOR i = 1 TO N 'Ввод матрицы
FOR j = 1 TO M
PRINT "A(" ; i ; ", " ; j ; ") = " ; : INPUT A(i, j)
NEXT j
NEXT i : PRINT
INPUT "P = " , P : INPUT "Q = " , Q
CLS : PRINT "Исходная матрица :"
FOR i = 1 TO N 'Вывод матрицы
FOR j = 1 TO M
PRINT A(i, j) ;
NEXT j
PRINT
NEXT i
FOR j = 1 TO M 'Замена строк
Tmp=A(P,j):A(P,j)=A(Q,j):A(Q,j)=Tmp
NEXT j
PRINT : PRINT "Матрица-результат :"
FOR i = 1 TO N 'Вывод результата
FOR j = 1 TO M
PRINT A(i, j) ;
NEXT j
PRINT ' переход на новую строку
NEXT i
END
|
Результаты работы QBasic-программы
Исходная
матрица:
1 2 1
2 2 2
3 1 3
Матрица-результат:
3 1 3
2 2 2
1 2 1
|
|