Тема. Создание модулей. Процедурный тип. Нетипизированные параметры.
Составить подпрограмму, которая меняет местами заданные элементы матрицы 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.
Блок схемы:
Блок схема модуля:
Блок схема основной программы:
|