Язык программирования Pascal. Процедуры и функции. Рекурсия. Васильев В.В - 18 стр.

UptoLike

18
begin
s:=true;
for i:=2 to n do s:=s and (v[i-1]<=v[i]); rost:=s
end;{rost}
function spad (v:vect; n:integer):boolean;
var s:boolean; i:integer;
begin
s:=true;
for i:=2 to n do s:=s and (v[i-1]>=v[i]);
spad:=s
end;{spad}
Begin
Textbackground(7); Textcolor(blue); Clrscr;
writeln('Введите количество строк матрицы (не больше ',m_max,')');
readln(m);
writeln('Введите количество столбцов матрицы (не больше ',n_max,')');
readln(n);
writeln('Введите вещественную матрицу размером ',m,'x',n);
for i:=1 to m do
for j:=1 to n do read(a[i,j]);
writeln('Введена вещественная матрица:');
for i:=1 to m do
begin for j:=1 to n do write (a[i,j]:7:1); writeln end;
{------------------------------------------------------}
f:=true; g:=true;
if m<=n then p_max:=(m+1) div 2 else p_max:=(n+1) div 2;
for p:=1 to p_max do
begin
{верхняя строка р-го витка}
k:=1;
for j:=p-1 to n-p+1 do
begin
if j=0 then continue; v[k]:=a[p,j]; k:=k+1
end; r:=k-1;
{ (* контроль *) for j:=1 to r do write(v[j]:3:0,' '); writeln;}
f:=f and rost(v,r); g:=g and spad(v,r);
if not(f or g) then break;
{правый столбец р-го витка}
k:=1;
for j:=p to m-p+1 do
begin v[k]:=a[j,n-p+1]; k:=k+1 end; r:=k-1;
{ (* контроль *) for j:=1 to r do write(v[j]:3:0,' '); writeln;}
f:=f and rost(v,r); g:=g and spad(v,r);
if not(f or g) then break;
{нижняя строка р-го витка}