Загрузка данных


program diamond;

var
  n, k: integer;

procedure PrintSpaces(count: integer);
begin
  if count > 0 then
  begin
    write(' ');
    PrintSpaces(count - 1);
  end;
end;

procedure PrintChars(count: integer);
begin
  if count > 0 then
  begin
    write('*');
    PrintChars(count - 1);
  end;
end;

procedure DrawLine(k, n: integer);
var
  inner: integer;
begin
  PrintSpaces(n - k);

  write('*');

  if k > 1 then
  begin
    PrintSpaces(2 * k - 3);
    write('*');
  end;

  inner := k - 2;

  if (n >= 5) and (inner >= 1) and
     (inner <= n - 4) then
  begin
    PrintSpaces(2 * (n - k) + 1);
    write('*');

    if inner > 1 then
    begin
      PrintSpaces(2 * inner - 3);
      write('*');
    end;
  end;

  writeln;
end;

procedure DrawTop(k, n: integer);
begin
  if k <= n then
  begin
    DrawLine(k, n);
    DrawTop(k + 1, n);
  end;
end;

procedure DrawBottom(k, n: integer);
begin
  if k >= 1 then
  begin
    DrawLine(k, n);
    DrawBottom(k - 1, n);
  end;
end;

begin
  repeat
    write('Enter diamond height (odd number >= 5): ');
    readln(n);
  until (n >= 5) and (n mod 2 = 1);

  n := n div 2 + 1;

  DrawTop(1, n);
  DrawBottom(n - 1,  n);
end.