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


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 PrintLine(k, n: integer);
var
  innerK, innerN: integer;
begin
  PrintSpaces(n - k);

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

  if (n >= 4) and (k >= 2) and (k <= n - 1) then
  begin
    innerK := k - 1;
    innerN := n - 2;

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

  writeln;
end;

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

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

begin
  write('Enter diamond height (positive odd): ');
  readln(n);

  if (n > 0) and (n mod 2 = 1) then
  begin
    n := n div 2 + 1;
    DrawTop(1, n);
    DrawBottom(n - 1, n);
  end;
end.