В заданной матрице A(N, M) поменять местами строки с номерами P и Q (1 <= P <= N, 1 <= Q <= N) - Pascal(Паскаль)

{
         Пример 3.3  В заданной матрице  А(N,M)  поменять местами
                     строки с номерами Р и Q  (1<=P<=N, 1<=Q<=N).

                                     Тест
                 ╔════════════════════╦═══════════════════╗
                 ║       Данные       ║     Результат     ║
                 ╠════════════════════╬═══════════════════╣
                 ║ N=3  M=3  P=1  Q=3 ║                   ║
                 ║                    ║       3  1  3     ║
                 ║       1  2  1      ║   A = 2  2  2     ║
                 ║  A =  2  2  2      ║       1  2  1     ║
                 ║       3  1  3      ║                   ║
                 ╚════════════════════╩═══════════════════╝
}
 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.

Leave a Comment

8 + 1 =