Masz – z Pascala będzie Ci łatwiej przeportować:
procedure Bush(ABegin, AEnd: Integer);
var
Module, Line, Mark: Integer;
begin
for Module := ABegin to AEnd do
for Line := 1 to Module do
begin
for Mark := 1 to Line do
Write('#');
Write(LineEnding);
end;
end;
Pierwsza pętla indeksuje po trójkątach, od rozmiaru początkowego do końcowego, druga indeksuje po liniach trójkąta od 1
do rozmiaru bieżącego trójkąta, a trzecia pętla indeksuje znaki od 1
do długości bieżącej linii. Po narysowaniu danej linii (czyli po pętli indeksującej znaki) trzeba dodatkowo dopisać znak nowej linii.
Choinka podana w pierwszym poście, względem powyższego kodu, posiada rozmiar początkowy 2
(bo pierwszy trójkąt składa się z dwóch linii), a końcowy to 4
(bo ostatni trójkąt składa się z czterech linii).