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

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

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.

Вывод:

  *
 * *
*   *
 * *
  *

Подскажите, как сделать так, чтобы результат мог выдавать несколько рисунков через пробел, чтобы количество тоже можно было задать? Не пойму как дальше отрисовать.

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

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

Автор решения: MBo

Весь код:

procedure Diamonds(size, num: Integer);
var
  line, i, h, t: Integer;
begin
  h := size div 2;
  for line := 1 to size do begin
    for i := 1 to num do begin
       if (line = 1) or (line = size) then
         Write(StringOfChar(' ', h) + '*' + StringOfChar(' ', h))
       else begin
         t := abs(h + 1 - line);
         Write(StringOfChar(' ', t) + '*' +StringOfChar(' ', size-2-2*t)+ '*' +StringOfChar(' ', t));
       end;
    end;
    Writeln;
  end;
end;

begin
  Diamonds(7,3);
  Readln;

   *      *      *
  * *    * *    * *
 *   *  *   *  *   *
*     **     **     *
 *   *  *   *  *   *
  * *    * *    * *
   *      *      *
→ Ссылка