Отрисовать алмаз на паскале

Всем добрый день. Делаю простые упражнения на паскале, мне удалось вывести алмаз таким образом. Высота его задаётся пользователем. К примеру, если задать число 5, результат будет таким:

  *
 * *
*   *
 * *
  *

Код выглядит так:

program diamontest;

procedure PrintSpaces (count : integer);
var i : integer;
begin
   for i := 1 to count do
      write(' ')
end;

procedure PrintLineOfDiamonds (k, n : integer);
begin
   PrintSpaces(n + 1 - k);
   write('*');
   if (k > 1) then
   begin
      PrintSpaces(2*k -3);
      write('*');
   end;
   writeln
end;

var n, k, h : integer;
begin
   repeat
      write('Enter the diamond''s height (positive odd): ');
      readln(h)
   until (h > 0) and (h mod 2 = 1);
   n:= h div 2;
   for k:= 1 to n + 1 do
      PrintLineOfDiamonds(k, n);
   for k := n downto 1 do
      PrintLineOfDiamonds(k, n);
end.

Но теперь мне нужно сделать его инверсию таким образом, если снова задаём число 5:

*******
*** ***
**   **
*     *
**   **
*** ***
*******

Добавил процедуру PrintStars, поправил формулы в PrintLineOfDiamonds, вышло следующее:

 program diamontest;

procedure PrintSpaces (count : integer);
var i : integer;
begin
   for i := 1 to count do
      write(' ')
end;

procedure PrintStars (count : integer);
var i : integer;
begin
   for i := 1 to count do
      write('*')
end;

procedure PrintLineOfDiamonds (k, n : integer);
begin
   PrintStars(n + 2 - k);
   write(' ');
   if (k > 1) then
   begin
      PrintSpaces(2*k -2);
   end;
   PrintStars(n + 2 - k);
   writeln
end;

var n, k, h : integer;
begin
   repeat
      write('Enter the diamond''s height (positive odd): ');
      readln(h)
   until (h > 0) and (h mod 2 = 1);
   n:= h div 2;
   PrintStars(h + 2);
   writeln;
   for k:= 1 to n + 1 do
      PrintLineOfDiamonds(k, n);
   for k := n downto 1 do
      PrintLineOfDiamonds(k, n);
   PrintStars(h+2);
end.

В принципе вывод, если я его копирую из консоли сюда соответсвует задаче, но выглядит в самой консоли это вот так

введите сюда описание изображения

Звёзды в третьем ряду от середины алмаза и сверху и снизу при любом размере фигуры всегда слипаются. Это можно поправить или это так консоль в любом случае выдаёт?


Ответы (0 шт):