/* Declaration de fonctionnalites supplementaires */
#include <stdlib.h>	/* EXIT_SUCCESS */
#include <stdio.h>	/* printf       */

/* Declaration des constantes et types utilisateurs */

/* Declaration des fonctions utilisateurs */

/* Fonction principale */
int main()
{
	/* Declaration et initialisation des variables */

   int nrlignes;  /* on y mettra la valeur saisie par l'utilisateur    |  exemple avec       BBB*       haut_p1  = 4    */
                  /*                                                   |  7 lignes:          BB***      larg_p1  = 7    */
   int i;         /* première variable de boucle                       |                     B*****     haut_p2  = 3    */
   int j;         /* deuxième variable de boucle                       |  B = blancs         *******    larg_p2  = 7    */
                  /*                                                   |  à écrire           BB***      larg_max = 7    */
   int haut_p1;   /* nombre de lignes de la première partie du sapin   |  avant les          B*****     dmi_larg = 4    */
   int larg_p1;   /* largeur de la première partie du sapin            |  étoiles            *******                    */
                  /*                                                   |----------------------------------------------- */
   int haut_p2;   /* nombre de lignes de la deuxième partie du sapin   |  exemple avec       BBB*       haut_p1  = 3    */
   int larg_p2;   /* largeur de la deuxième partie du sapin            |  6 lignes:          BB***      larg_p1  = 5    */
                  /*                                                   |                     B*****     haut_p2  = 3    */
   int dmi_larg;  /* demi-largeur du sapin                             |                     BB***      larg_p2  = 7    */
   int larg_max;  /* largeur maximale du sapin                         |                     B*****     larg_max = 7    */
                  /*                                                   |                     *******    dmi_larg = 4    */



	/* on demande à l'utilisateur le nombre de lignes du sapin */
	printf("Combien de lignes ? ");

	scanf("%d", &nrlignes);

	if(nrlignes < 1)
	{
		printf("valeur pas acceptée, sortie...\n");
	}

	else
	{
		printf("dessin d'un sapin d'hauteur = %d...\n", nrlignes);
		printf("\n");



		/* calcul de l'hauteur de la première partie du sapin */
		haut_p1 = 0;

		for(i = 0; 2 * i < nrlignes; i = i + 1)
		{
			haut_p1 = haut_p1 + 1;
		}

		/* largeur de la première partie du sapin */
		larg_p1 = 2 * haut_p1 - 1;

		/* hauteur et largeur de la deuxième partie du sapin */
		haut_p2 = nrlignes - haut_p1;

		larg_p2 = 2 * haut_p2 + 1;

		/* on calcule la largeur maximale et en suite la demi-largeur */
		larg_max = larg_p1;

		if(larg_p2 > larg_max)
		{
			larg_max = larg_p2;
		}

		/* la largeur maximale est toujours un nombre impair -> (larg_max + 1) / 2 est un entier */
		dmi_larg = (larg_max + 1) / 2;



		/* dessin de la première partie du sapin */
		for(i = 0; i < haut_p1; i = i + 1)
		{
			/* blancs avant les etoiles */
			for(j = 0; j < (dmi_larg - 1) - i; j = j + 1)
			{
				printf(" ");
			}

			/* etoiles */
			for(j = 0; j < 2 * i + 1; j = j + 1)
			{
				printf("*");
			}

			printf("\n");
		}



		/* dessin de la deuxième partie du sapin */
		for(i = 0; i < haut_p2; i = i + 1)
		{
			/* blancs avant les etoiles */
			for(j = 0; j < (dmi_larg - 2) - i; j = j + 1)
			{
				printf(" ");
			}

			/* etoiles */
			for(j = 0; j < 2 * i + 3; j = j + 1)
			{
				printf("*");
			}

			printf("\n");
		}

		printf("\n");
	}

	/* valeur de fonction */
	return EXIT_SUCCESS;
}

/* Definitions des fonctions utilisateurs */