Программа
USES CRT;
CONST N=10;
TYPE Matrix=array[1..N,1..N] of integer;
VAR A:Matrix;
Height,Width:1..N;
PROCEDURE MatrixInput(Height,Width:integer; var A:Matrix);
Var i,j:integer;
Begin
for i:=1 to Height do
for j:=1 to Width do
A[i,j]:=Random(10)
End;
FUNCTION Min(A,B:integer):integer;
Begin
if A<B then Min:=A
else Min:=B
End;
PROCEDURE OutputMatrix(Height,Width:integer; A:Matrix);
Var i,j:integer;
Begin
Write('┌');
for j:=1 to Width do Write(' ');
WriteLn('┐');
for i:=1 to Height do
begin
Write('│');
for j:=1 to Width do Write(A[i,j]:3,' ');
WriteLn('│')
end;
Write('└');
for j:=1 to Width do Write(' ');
WriteLn('┘');
End;
PROCEDURE OutputSpiral(Height,Width:integer; A:Matrix);
Var i,j,k:integer;
NumberSpiral:integer;
Begin
NumberSpiral:=Min(Height,Width);
NumberSpiral:=NumberSpiral div 2 + Ord(Odd(NumberSpiral));
for k:=1 to NumberSpiral do
begin
for i:=k to Width-k+1 do Write(A[k,i],' ');
for i:=k+1 to Height-k+1 do Write(A[i,Width-k+1],' ');
if not Odd(Min(Height,Width)) or (k<NumberSpiral) then
for i:=Width-k downto k do Write(A[Height-k+1,i],' ');
if not Odd(Min(Height,Width)) or (k<NumberSpiral) then
for i:=Height-k downto k+1 do Write(A[i,k],' ')
end
End;
BEGIN
ClrScr;
Randomize;
Height:=Random(N)+1;
Width:=Random(N)+1;
{Height:=15;
Width:=19;}
MatrixInput(Height,Width,A);
OutputMatrix(Height,Width,A);
OutputSpiral(Height,Width,A);
{ReadKey }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию