[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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
 

[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]