В каждой из матриц поменять местами две строки - Pascal

Узнай цену своей работы

Формулировка задачи:

В каждой из матриц: А(3 строки, 4 столбца) и В(5 строк, 5 столбцов) поменять местами две строки: в матрице А - строки 2 и 3, в матрице В - строки 2 и 4. Для обмена в матрице строк с произвольными номерами использовать процедуру.

Решение задачи: «В каждой из матриц поменять местами две строки»

textual
Листинг программы
type
    TLine = Array[Byte] Of ShortInt;
    TArray = Array[Byte] Of TLine;
    TMatrix = record
        arr: TArray;
        n, m: Byte;
    end;
procedure PrintMatrix(const matr: TMatrix);
var
    i, j: Byte;
begin
    with matr do
        for i := 0 to n - 1 do
        begin
            for j := 0 to m - 1 do
                Write(arr[i, j]:4);
            WriteLn;
        end;
end;
procedure GenerateMatrix(var matr: TMatrix);
var
    i, j: Byte;
begin
    with matr do
    begin
        repeat
            Write('Input n=');
            ReadLn(n);
        until (n > 0);
        repeat
            Write('Input m=');
            ReadLn(m);
        until (m > 0);
        for i := 0 to n - 1 do
            for j := 0 to m - 1 do
                arr[i, j] := Random(199) - 99;
    end;
    PrintMatrix(matr);
end;
procedure SwapLines(var x, y: TLine);
var
    z: TLine;
begin
    z := x;
    x := y;
    y := z;
end;
var
    a, b: TMatrix;
begin
    Randomize();
    WriteLn('Matrix A:'); GenerateMatrix(a);
    WriteLn('Matrix B:'); GenerateMatrix(b);
    with a do
        if (n > 2)
        then
            SwapLines(arr[1], arr[2])
        else
            WriteLn('Not enough lines to swap!');
    WriteLn('New matrix A:'); PrintMatrix(a);
    with b do
        if (n > 3)
        then
            SwapLines(arr[1], arr[3])
        else
            WriteLn('Not enough lines to swap!');
    WriteLn('New matrix B:'); PrintMatrix(b);
end.

Объяснение кода листинга программы

  1. Объявление типов данных:
    • TLine - массив байтовых чисел
    • TArray - массив из TLine
    • TMatrix - запись, содержащая массив (arr), количество строк (n) и столбцов (m)
  2. Процедура PrintMatrix:
    • Принимает на вход матрицу matr.
    • Использует вложенные циклы для перебора элементов матрицы и выводит их на экран.
  3. Процедура GenerateMatrix:
    • Принимает на вход матрицу matr.
    • Запрашивает у пользователя количество строк (n) и столбцов (m).
    • Заполняет матрицу случайными числами от -99 до 99.
    • Выводит на экран полученную матрицу.
  4. Процедура SwapLines:
    • Принимает на вход две строки типа TLine - x и y.
    • Переменная z временно хранит значение x.
    • Присваивает x значение y и y значение z (получаем обмен значений между x и y).
  5. Основная программа:
    • Объявляется две матрицы a и b типа TMatrix.
    • Генерируются случайные матрицы a и b с помощью процедуры GenerateMatrix.
    • Если количество строк в матрице a больше 2, заменяются местами строки с индексами 1 и 2 с помощью процедуры SwapLines.
    • Выводится новая матрица a с измененными строками.
    • Аналогично, если количество строк в матрице b больше 3, заменяются местами строки с индексами 1 и 3.
    • Выводится новая матрица b с измененными строками.

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы