Zadanie polega na narysowaniu choinki bezpośrednio w systemowej konsoli. Algorytm powinien rysować tyle warstw ile zdecyduje użytkownik. Napisz dwie wersję: wypełnioną choinkę oraz tylko kontury. Przyjmujemy, że każda warstwa choinki przypomina swoim wyglądem trójkąt. Dodatkowo drzewko powinno posiadać pieniek oraz opcjonalnie gwiazdkę na czubku.
Choinka będzie się składać z kolejnych linijek tekstu. Części choinki można wyśrodkować dopisując z lewej strony odpowiednią ilość znaków przerwy. Jak można poniżej zauważyć przyjmujemy, że każda warstwa zaczyna się od jednego znaku, a kolejne linie warstwy to kolejne liczby nieparzyste: 1, 3, 5, ...
Do narysowania takiej choinki potrzebne są tylko dwa znaki: # oraz spacja. Poniższy kod funkcji rysujChoinke() generuje powyższy przykład.
Przed rozpoczęciem rysowania choinki należy określić jak szeroka jest na dole. Bez tego nie będzie możliwe jej wyśrodkowanie. Wśrodku funkcji znajdują się dwię pętle: pierwsza rysuje kolejne warstwy, a druga części rysowanych warstw.
Bardziej skomplikowanie wygląda choinka składająca się z samych konturów. Wykorzystuje ona więcej znaków, ale różni się jedynie sposobem wypisania kolejnych wierszy. Tym razem dodatkowo została dorysowana opcjonalna gwiazdka na szczycie.
Oto zaktualizowany kod funkcji rysujChoinke(), która wypisuje choinkę jak wyżej.
Przed rozpoczęciem pętli rysowany jest czubek. Podczas rysowania warstwy należy sprawdzić czy środek choinki ma być pusty czy mają się tam znaleźć podkreślniki. Jednak niezależnie od wypisywanego znaku zawsze przed nimi należy dostawić znak slasha "/", a na koniec backslasha "\". Tutaj uwaga warto zauważyć, że są one dopisywane jako dwa dodatkowe znaki w każdej linijce, więc należy zwiększyć zmienną max, która przechowuje długość najdłuższej linijki, o 2.
W celu narysowania choinki wystarczy wpisać:
Napisz funkcję rysujChoinke(), która dla 2 warstw wypisze choinkę taką jak poniżej: