Преобразование массива - Free Pascal
Формулировка задачи:
Разработать алгоритм и программу, позволяющую осуществлять
преобразование двумерного массива размером [4×5] по следующей схеме:
элементы 1-ой строки расположить в порядке возрастания значений;
элементы 2-й строки расположить в порядке убывания значений; строки 3 и 4
поменять местами. Результат представить в виде двух таблиц с исходным и
преобразованным массивом. Обеспечить возможность заполнения массива
как путем ввода значений с клавиатуры, так и с помощью датчика случайных
чисел, а также возможность вывода исходного и преобразованного массивов
в текстовый файл.
Решение задачи: «Преобразование массива»
textual
Листинг программы
uses crt;
const n=5;
m=4;
type mas=array[1..m,1..n] of integer;
procedure inmatrix(var x:mas;m,n:integer);
var i,j:integer;
begin
for i:=1 to m do
for j:=1 to n do
x[i,j]:=-5+random(21);
end;
procedure print(var x:mas;m,n:integer);
var i,j:integer;
begin
for i:=1 to m do
begin
for j:=1 to n do
write(x[i,j]:4);
writeln;
end;
end;
procedure sortstr(var x:mas;m,n:integer);
var i,j,tmp,k:integer;
begin
for j:=1 to n do
begin
tmp:=x[1,j];
k:=j;
while (k>1) and (tmp<x[1,k-1]) do
begin
x[1,k]:=x[1,k-1];
dec(k);
end;
x[1,k]:=tmp;
end;
end;
procedure sorts(var x:mas;m,n:integer);
var i,j,tmp,k:integer;
begin
for j:=1 to n do
begin
tmp:=x[2,j];
k:=j;
while (k>1) and (tmp>x[2,k-1]) do
begin
x[2,k]:=x[2,k-1];
dec(k);
end;
x[2,k]:=tmp;
end;
end;
procedure swap(var x:mas;m,n:integer);
var tmp,j:integer;
begin
for j:=1 to n do
begin
tmp:=x[3,j];
x[3,j]:=x[4,j];
x[4,j]:=tmp;
end;
end;
var a:mas;
begin
clrscr;
writeln('Матрица :');
inmatrix(a,m,n);
print(a,m,n);
writeln('Новая матрица :');
sortstr(a,m,n);
sorts(a,m,n);
swap(a,m,n);
print(a,m,n);
readkey;
end.
Объяснение кода листинга программы
- В начале кода объявляются константы и переменные:
- n = 5 - размер матрицы по строкам;
- m = 4 - размер матрицы по столбцам;
- mas = array[1..m,1..n] of integer - тип массива, который будет использоваться в процедурах;
- a - переменная типа mas, которая будет представлять собой матрицу.
- Далее идут четыре процедуры:
- inmatrix - заполняет матрицу a случайными числами от -5 до 0;
- print - выводит на экран содержимое матрицы a;
- sortstr - сортирует строки матрицы a по возрастанию;
- sorts - сортирует столбцы матрицы a по возрастанию.
- Последняя процедура swap меняет местами две строки матрицы a.
- В основной части программы:
- создается матрица a;
- выводится сообщение
Матрица :и текущее содержимое матрицы a; - вызывается процедура inmatrix для заполнения матрицы a;
- вызывается процедура print для вывода на экран заполненной матрицы a;
- выводится сообщение
Новая матрица :и матрица a после сортировки строк; - вызывается процедура sortstr для сортировки строк матрицы a;
- вызывается процедура sorts для сортировки столбцов матрицы a;
- вызывается процедура swap для перестановки строк матрицы a;
- вызывается процедура print для вывода на экран измененной матрицы a;
- программа ожидает нажатия клавиши.