Witam, muszę stworzyć choinkę wyglądającą mniej więcej tak (zdjęcie poniżej), ze skalującym się pniem i z możliwością podania ilości poziomów. Po kilku nieudanych próbach udało mi się stworzyć coś takiego, niestety nie mogę dojść do tego jak po podaniu ilości poziomów zostaną one prawidłowo stworzone, ponieważ raz to działa raz nie np. gdy podaję 5 program tworzy 5 poziomów, natomiast gdy chcę 10 poziomów, program tworzy ich mniej, oraz jak zostawić jedynie podstawę ostatniego(dolnego) i pierwszego(górnego) poziomu.
#include <stdio.h>
#include <stdlib.h>
void poziomy(int f, int n, int toth)
{
int i, j, k = 2 * toth -2;
for (i = 0; i < f -1 ; i++)
k--;
for (i = f ; i < n; i++)
{
for (j = 0; j < k; j++)
{
printf(" ");
}
for (j = 1; j <= (2 * i - 1); j++)
{
if (i == k || j == 1 || j == (2 * i - 1))
{
printf("*");
}
else if (i == n - 1 )
{
printf("*");
}
else if (f == 1 &&( n == (i +1)))
{
printf("*");
}
else
{
printf(" ");
}
}
k = k - 1;
printf("\n");
}
}
void choinka(int h)
{
int a = h * 3;
int start = 1, stop = 0, diff = 3;
while (stop < a + 1)
{
stop = start + diff;
poziomy(start, stop, a);
diff++;
start = stop - 2;
}
}
void pien(int n)
{
int a = n* 3;
int i, j, k = 2 * a - 4;
for (i = 1; i <= a / 3; i++) {
for (j = 0; j < k; j++)
printf(" ");
for (j = 1; j <= 6; j++)
printf("#");
printf("\n");
}
}
int main()
{
int ht=6;
choinka(ht);
pien(ht);
return 0;
}