Программа


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.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию