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


program diamond;

var
  n, x, y: integer;

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

procedure DrawRow(y, n: integer);
var
  x, outerWidth, innerWidth: integer;
begin
  outerWidth := n - abs(y);

  if n >= 5 then
    innerWidth := (n - 2) - abs(y)
  else
    innerWidth := -1;

  for x := -n to n do
  begin
    if (abs(x) = outerWidth) or
       ((innerWidth >= 0) and (abs(y) <= n - 2)
        and (abs(x) = innerWidth)) then
      write('*')
    else
      write(' ');
  end;
  writeln;
end;

procedure DrawTop(y, n: integer);
begin
  if y >= 0 then
  begin
    DrawRow(y, n);
    DrawTop(y - 1, n);
  end;
end;

procedure DrawBottom(y, n: integer);
begin
  if y <= 0 then
  begin
    DrawRow(y, n);
    DrawBottom(y + 1, n);
  end;
end;

begin
  write('Enter size (5 or more): ');
  readln(n);

  if n >= 5 then
  begin
    DrawTop(n, n);
    DrawBottom(-n + 1, n);
  end;
end.