/*----------------------------------------------------------*/ /* */ /* AUTHOR : Eric VIOLARD */ /* E-MAIL : violard@icps.u-strasbg.fr */ /* ORGANISM : Université Louis Pasteur (Strasbourg) */ /* CREATION : 08/11/02 */ /* */ /* ---------------------------------------------------------*/ /* Programme qui dessine un sapin couché, étant donnée sa hauteur h. Ex: pour h=5 * ** *** **** ***** **** *** ** * Le sapin se découpe en 2 moitiés. La première : * ** *** **** ***** et la deuxième : **** *** ** * Pour la première partie et en numérotant les lignes de 1 à h (de haut en bas), l'affichage de la ième ligne consiste en l'affichage de h-i espaces, suivi de i étoiles. Pour la deuxième partie et en numérotant les lignes de 1 à h-1 (de haut en bas), l'affichage de la ième ligne consiste en l'affichage de i espaces, suivi de h-i étoiles. NB: la hauteur doit être supérieure ou égale à 2 */ #include /* pour utiliser la fonction printf */ main() { /* déclarations */ int hauteur; /* la hauteur donnée */ int ligne; /* numéro de la prochaine ligne à afficher */ /* --- lecture de la hauteur --- */ printf("Entrer une hauteur de sapin : "); scanf("%d",&hauteur); /* --- affichage de la première partie --- */ ligne = 1; /* la première ligne a pour numéro 1 */ while(ligne<=hauteur) /* tant qu'il reste une ligne à afficher */ { /* --- affichage d'une ligne --- */ { int i; /* compteur d'espaces ou d'étoiles */ /* affichage de (hauteur-ligne) espaces */ i=1; while(i<=hauteur-ligne) { printf(" "); i=i+1; } /* affichage de (ligne) étoiles */ i=1; while(i<=ligne) { printf("*"); i=i+1; } } /* --- passage à la ligne suivante --- */ printf("\n"); /* affichage d'un retour à la ligne */ ligne=ligne+1; /* incrémentation du numéro de ligne */ } /* --- affichage de la deuxième partie --- */ ligne = 1; /* la première ligne a pour numéro 1 */ while(ligne<=hauteur-1) /* tant qu'il reste une ligne à afficher */ { /* --- affichage d'une ligne --- */ { int i; /* compteur d'espaces ou d'étoiles */ /* affichage de (ligne) espaces */ i=1; while(i<=ligne) { printf(" "); i=i+1; } /* affichage de (hauteur-ligne) étoiles */ i=1; while(i<=hauteur-ligne) { printf("*"); i=i+1; } } /* --- passage à la ligne suivante --- */ printf("\n"); /* affichage d'un retour à la ligne */ ligne=ligne+1; /* incrémentation du numéro de ligne */ } /* Une autre solution avec des "for" plutôt que des "while" : // première partie for(ligne=1;ligne<=hauteur;ligne++) { int i; for(i=1;i<=hauteur-ligne;i++) printf(" "); for(i=1;i<=ligne;i++) printf("*"); printf("\n"); } // deuxième partie for(ligne=1;ligne<=hauteur-1;ligne++) { int i; for(i=1;i<=ligne;i++) printf(" "); for(i=1;i<=hauteur-ligne;i++) printf("*"); printf("\n"); } */ }