Поменять местами элементы матрицы - Pascal ABC
Формулировка задачи:
Поменять местами в двумерном массиве:
в каждом столбце первый принадлежащий отрезку [a, b] и первый отрицательный элементы;
Помогите пожалуйста, с меня спасибо.
Решение задачи: «Поменять местами элементы матрицы»
textual
Листинг программы
Program Matrix;
uses Crt;
var mas : array [1..10,1..10] of integer;
x, a, b : integer;
i, j, j_1, j_2, k_1, k_2, m, n : byte;
BEGIN
ClrScr;
Write('Введите диапазон: ');
Read(a, b);
Write('Количество строк массива: ');
ReadLn(m);
Write('Количество столбцов массива: ');
ReadLn(n);
for i:=1 to m do
begin
WriteLn('Введите ', n, ' чисел:');
for j:=1 to n do
Read(mas[i, j]);
end;
// вывод массива
WriteLn('Исходный массив:');
for i:= 1 to m do
begin
for j:=1 to n do
Write(mas[i, j]:4);
WriteLn
end;
//сортировка
Writeln;
for j:=1 to n do
begin
for i:=1 to m do
begin
if (mas[i,j]<0) and (mas[i,j]=a) then break;
// Если первый отрицательный = первому элементу диапазона, то
// выход из цикла for i т.е. переходим на следующий столбец
if (mas[i,j]<0) and (j_1 < 1) then
begin
Inc(j_1);
if(j_2 = 1) then
begin
mas[k_2,j]:=mas[i,j];
mas[i,j]:=x;
end
else
begin
k_1:=i;
x:=mas[i,j];
end
end;
if (mas[i,j]>=a) and (mas[i,j]<=b) and (j_2 < 1)then
begin
Inc(j_2);
if(j_1 = 1) then
begin
mas[k_1,j]:=mas[i,j];
mas[i,j]:=x;
end
else
begin
k_2:=i;
x:=mas[i,j];
end
end
end;
j_1:=0;
j_2:=0;
end;
// вывод массива
WriteLn('Искомый массив:');
for i:= 1 to m do
begin
for j:=1 to n do
Write(mas[i, j]:4);
WriteLn
end;
END.
Объяснение кода листинга программы
В данном коде происходит следующее:
- Запрашивается диапазон чисел для заполнения матрицы.
- Запрашивается количество строк и столбцов матрицы.
- Заполняется матрица заданными числами.
- Выводится исходная матрица.
- Матрица сортируется по возрастанию.
- Для каждой строки матрицы выполняется проверка: если все элементы строки отрицательны и равны заданному диапазону, то происходит переход на следующий столбец.
- Если условие из п.6 выполняется, то происходит обмен элементов текущей строки и следующего столбца.
- Выводится отсортированная матрица.