Отрисовать несколько алмазов на 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;
* * *
* * * * * *
* * * * * *
* ** ** *
* * * * * *
* * * * * *
* * *