Тема. Создание модулей. Процедурный тип. Нетипизированные параметры.
Составить подпрограмму, которая меняет местами заданные элементы матрицы N*M (использовать нетипизированные параметры). Применить ее к матрице, состоящей из случайных чисел.

Исходный код модуля для Delphi 7:
unit Mas;

interface

procedure swap(var m0,m1; size:Integer);

implementation

procedure swap(var m0,m1; size:Integer);
// size — размер в байтах m0(m1 — должен быть такого же размера)
var
ch:Char;
ch0,ch1:^Char;
i:Integer;
begin
Ch0:=@m0;
Ch1:=@m1;
for i:=size -1 downto 0 do
begin
ch := ch0^;
ch0^ := ch1^;
ch1^ := ch;
inc(ch0);
inc(ch1);
end;
end;

end.

Исходный код программы для Delphi 7:
program lab2;

{$APPTYPE CONSOLE}

uses
SysUtils,mas;

var
N,M:Integer;
i,j:Integer;
a0,b0,a1,b1:Integer;
matr:array of array of Integer;
begin

Randomize;
write(‘vvedite N,M:’);
readln(N,M);
SetLength(matr,n);
for i:=0 to N-1 do
SetLength(matr[i],m);

for i:=0 to N-1 do
begin
for j:=0 to M -1 do
begin
matr[i,j]:=Random(1000);
write(matr[i,j]:4,’ ‘);
end;
writeln;
end;

writeln (‘ — — — — — — — — — — — — — — — — — — — -‘);

// a0:= random(N); b0:= random(M); //элементы которые заменяем
// a1:= random(N); b1:= random(M);

Writeln(‘A0=’);Readln(a0);
Writeln(‘B0=’);Readln(b0);
Writeln(‘A1=’);Readln(a1);
Writeln(‘B1=’);Readln(b1);

swap(matr[a0-1,b0-1],matr[a1-1,b1-1],sizeof(matr[a0-1,b0-1]));

// +1 так как отсчет в матрице идет с 0
writeln(‘zamenenu mestami elementu: ‘, ‘(‘,a0,’,’,b0,’)’, ‘ (‘,a1,’,’,b1,’)’);

writeln;
for i:=0 to N-1 do
begin
for j:=0 to M -1 do
write(matr[i,j]:4,’ ‘);
writeln;
end;

writeln;
writeln(‘nagmi enter…’);
readln;
end.

Блок схемы:
Блок схема модуля:

Блок схема основной программы: