подпрограмма

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

alex13
Сообщения: 6
Зарегистрирован: 01 апр 2009, 12:21

type
Tmtx=array[1..10,1..15] of integer;
Var imin,jmin,imax,jmax,max,min :integer;
t, j,i:integer; N,M:byte ;
A:Tmtx;
procedure Vvod2m(var A:Tmtx;var N,M:byte;const Name:char);
var i,j:integer;
begin
writeLn('введите массив ', Name,':');
write('размерность массива N='); readLn(N);
write('размерность массива M='); readLn(M);

for i:=1 to N do
for j:=1 to M do
begin
write(Name,'[',i,',',j,']=');
readLn(A[i,j]);
end;
end;
procedure Vivod2m(const A:Tmtx;const N,M:byte; const Name:char);
var i,j:integer;
begin
writeLn('введите массив ', Name,':');
for i:=1 to N do
begin
for j:=1 to M do
write(A[i,j]:5);
writeLn;
end;
end;
Function Maximum (Var A:Tmtx; N,M: byte; var imax, jmax: integer ): integer;
var max:integer;
i,j:byte;
begin
max:=A[1,1]; imax:=1; jmax:=1;

for i:=1 to n do
for j:=1 to m do
if A[i,j]>max then
begin max:=A[i,j];imax:=i; jmax:=j; end;
Maximum:=max;
end;
Function Minimum (Var A:Tmtx; N,M: byte; var imin,jmin: integer): integer;
var min:integer;
i,j:byte;
begin
min:=A[1,1]; imin:=1; jmin:=1;
for i:=1 to n do
for j:=1 to m do
if A[i,j]<min then
begin min:=A[i,j]; imin:=i; jmin:=j; end;
Minimum:=min;
end;
procedure Del (var A:Tmtx;N,M:byte;max,min,imin,jmin,imax,jmax:integer);
var
i,j:byte;
begin

if (A[imin,jmin] mod 2=0) and (A[imax,jmax] mod 2=0)then
begin
A[imin,jmin]:=min div 2;
A[imax,jmax]:=max div 2; writeln('A[imin,jmin]=',A[imin,jmin]);
writeln('A[imax,jmax]=',A[imax,jmax]);

end; end;



procedure Perest (var x:Tmtx;N,M:byte);
var
i,j:byte;
t:integer;
begin
for i:=1 to N do
begin
t:=A[i,1];
A[i,1]:=A[i,M-1];
A[i,M-1]:=t;
end;
end;


BEGIN

vvod2m(A,N,M,'A');
vivod2m(A,N,M,'A');
max:=Maximum(A,N,M,imax,jmax);
min:=Minimum(A,N,M,imin,jmin);
if (A[imax,jmax] mod 2 = 0)and(A[imin,jmin] mod 2 =0) then
Del(A,N,M,max,min,imin,jmin,imax,jmax)
else
Perest(A,N,M);
vivod2m(A,N,M,'A');
END.
Ответить