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