Maison  >  Article  >  développement back-end  >  Maîtriser les modèles remplis : un guide complet avec des exemples de code

Maîtriser les modèles remplis : un guide complet avec des exemples de code

WBOY
WBOYoriginal
2024-07-18 21:23:21476parcourir

Mastering Filled Patterns: A Comprehensive Guide with Code Examples

Bienvenue dans notre guide complet sur la création de divers modèles remplis à l'aide de boucles en programmation C ! Dans ce didacticiel, nous expliquerons étape par étape comment dessiner 18 motifs remplis différents. Ces motifs vont des formes basiques comme les carrés et les triangles à des formes plus complexes comme les losanges, les hexagones et les pentagones. Chaque modèle est créé à l'aide de boucles imbriquées, ce qui en fait un excellent exercice pour les débutants souhaitant pratiquer les structures de contrôle en C. Allons-y !
Vous pouvez trouver tout le code dans notre référentiel GitHub.

Table des matières

  1. Introduction aux boucles imbriquées
  2. Carré rempli
  3. Triangle rectangle rempli
  4. Triangle rectangle inversé rempli
  5. Triangle rempli aligné à droite
  6. Triangle inversé rempli aligné à droite
  7. Triangle de Pascal droit rempli
  8. Triangle Pascal gauche rempli
  9. Triangle équilatéral rempli
  10. Triangle équilatéral inversé rempli
  11. Pyramide remplie
  12. Pyramide inversée remplie
  13. Diamant rempli
  14. Sablier rempli
  15. Losange rempli
  16. Parallélogramme rempli
  17. Hexagone rempli
  18. Pentagone rempli
  19. Pentagone inversé rempli
  20. Conclusion

Introduction aux boucles imbriquées

Avant de commencer avec les motifs, il est essentiel de comprendre le concept de boucles imbriquées. Une boucle imbriquée est une boucle à l’intérieur d’une autre boucle. Cette structure est particulièrement utile pour gérer des tableaux multidimensionnels et pour générer des modèles. En C, une structure de boucle imbriquée typique ressemble à ceci :

for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        // Code to execute
    }
}

Carré rempli

Explication:

  • Le motif carré rempli est l'un des motifs les plus simples à créer.
  • Il se compose de n lignes et n colonnes, où chaque cellule contient le même caractère.
  • Nous utilisons deux boucles imbriquées pour parcourir chaque ligne et colonne, en imprimant le caractère dans chaque cellule.
int n = 5; // size of the square
char ch = '*';

printf("1. Filled Square:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}

Sortir:

*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  

Triangle rectangle rempli

Explication:

  • Le motif de triangle rectangle rempli commence par un caractère dans la première ligne et augmente d'un caractère dans chaque ligne suivante.
  • Ce modèle est réalisé en utilisant deux boucles imbriquées. La boucle externe contrôle le nombre de lignes et la boucle interne contrôle le nombre de caractères imprimés dans chaque ligne.
printf("2. Filled Right Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j <= i; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}

Sortir:

*  
*  *  
*  *  *  
*  *  *  *  
*  *  *  *  *   

Triangle rectangle inversé rempli

Explication:

  • Le motif du triangle rectangle inversé rempli est l'opposé du triangle rectangle rempli.
  • Il commence par n caractères dans la première ligne et diminue d'un caractère dans chaque ligne suivante.
  • Semblable au triangle rectangle rempli, ce motif est créé à l'aide de deux boucles imbriquées.
printf("3. Filled Inverted Right Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n; j > i; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}

Sortir:

*  *  *  *  *  
*  *  *  *  
*  *  *  
*  *  
*  

Triangle rempli aligné à droite

Explication:

  • Le motif de triangle rempli aligné à droite est similaire au triangle rectangle rempli, mais le triangle est aligné à droite.
  • Ce motif est obtenu en ajoutant des espaces avant chaque rangée, créant ainsi une apparence alignée à droite.
printf("4. Filled Right Aligned Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf("   ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}

Sortir:

            *  
         *  *  
      *  *  *  
   *  *  *  *  
*  *  *  *  * 

Triangle inversé rempli et aligné à droite

Explication:

  • Le motif de triangle inversé rempli aligné à droite est l'opposé du triangle rempli aligné à droite.
  • Il commence par un caractère dans la première ligne et augmente d'un caractère dans chaque ligne suivante, mais le triangle est aligné à droite.
printf("5. Filled Right Aligned Inverted Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = 1; j <= i; j++) {
        printf("   ");
    }
    for (int j = n; j > i; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}

Sortir:

*  *  *  *  *  
   *  *  *  *  
      *  *  *  
         *  *  
            *  

Triangle de Pascal droit rempli

Explication:

  • Le motif de triangle de Pascal rectangle rempli combine le triangle rectangle et le triangle rectangle inversé pour former un triangle de type Pascal.
  • La première moitié du motif est similaire au triangle rectangle rempli, et la seconde moitié est similaire au triangle rectangle inversé rempli.
printf("6. Filled Right Pascal Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < i + 1; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}
for (int i = 0; i < n; i++) {
    for (int j = n; j > i + 1; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}

Sortir:

*  
*  *  
*  *  *  
*  *  *  *  
*  *  *  *  *  
*  *  *  *  
*  *  *  
*  *  
*    

Triangle Pascal gauche rempli

Explication:

  • Le motif du triangle Pascal gauche rempli est similaire au triangle Pascal droit rempli, mais il est aligné à gauche.
  • La première moitié du motif est similaire au triangle rempli aligné à droite, et la seconde moitié est similaire au triangle inversé rempli aligné à droite.
printf("7. Filled Left Pascal Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf("   ");
    }
    for (int j = 0; j < i + 1; j++) {
        printf("%c  ", ch);
    }
    printf("\n");
}

for (int i = 0; i < n; i++) {
    for (int j = 0; j < i + 1; j++) {
        printf("   ");
    }
    for (int j = n - 1; j > i; j--) {
        printf("%c  ", ch);
    }
    printf("\n");
}

Sortir:

            *  
         *  *  
      *  *  *  
   *  *  *  *  
*  *  *  *  *  
   *  *  *  *  
      *  *  *  
         *  *  
            *   

Triangle équilatéral rempli

Explication:

  • Le motif triangulaire équilatéral rempli a une forme symétrique avec chaque rangée centrée.
  • Pour y parvenir, nous imprimons des espaces avant chaque ligne pour centrer les caractères.
printf("8. Filled Equilateral Triangle:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}

Sortir:

    * 
   * * 
  * * * 
 * * * * 
* * * * *  

Triangle équilatéral inversé rempli

Explication:

  • Le motif de triangle équilatéral inversé rempli est la version inversée du triangle équilatéral rempli.
  • Il commence par n caractères à la base et diminue d'un caractère par ligne, centré.
printf("9. Filled Inverted Equilateral Triangle:\n");
for (int i = n - 1; i >= 0; i--) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}

Sortir:

* * * * * 
 * * * * 
  * * * 
   * * 
    *   

Pyramide remplie

Explication:

  • Le motif pyramidal rempli commence par un caractère en haut et augmente de deux caractères par ligne, formant une pyramide symétrique.
  • Nous utilisons des espaces pour centrer chaque ligne.
printf("10. Filled Pyramid:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j < (2 * i + 1); j++) {
        printf("%c", ch);
    }
    printf("\n");
}

Sortir:

    *
   ***
  *****
 *******
*********  

Pyramide inversée remplie

Explication:

  • Le motif de pyramide inversée remplie est à l'opposé de la pyramide remplie.
  • Il commence par 2 * n - 1 caractères en haut et diminue de deux caractères par ligne, centré.
printf("11. Filled Inverted Pyramid:\n");
for (int i = n; i > 0; i--) {
    for (int j = n - i; j > 0; j--) {
        printf(" ");
    }
    for (int j = 0; j < (2 * i - 1); j++) {
        printf("%c", ch);
    }
    printf("\n");
}

Sortir:

*********
 *******
  *****
   ***
    *  

Diamant rempli

Explication:

  • Le motif en losange rempli est formé en combinant le triangle équilatéral rempli et le triangle équilatéral inversé rempli.
  • Cela crée une forme de diamant symétrique.
printf("12. Filled Diamond:\n");
for (int i = 0; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = 0; i < n - 1; i++) {
    for (int j = 0; j <= i; j++) {
        printf(" ");
    }
    for (int j = n - 1; j > i; j--) {
        printf("%c ", ch);
    }
    printf("\n");
}

Sortir:

    * 
   * * 
  * * * 
 * * * * 
* * * * * 
 * * * * 
  * * * 
   * * 
    *  

Sablier rempli

Explication:

  • Le motif de sablier rempli combine un triangle équilatéral inversé et un triangle équilatéral, formant une forme de sablier.
  • Chaque ligne est centrée en ajoutant des espaces.
printf("13. Filled Hourglass:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < i; j++) {
        printf(" ");
    }
    for (int j = 0; j < (n - i); j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = 1; i < n; i++) {
    for (int j = n - 1; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j <= i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}

Output:

* * * * * 
 * * * * 
  * * * 
   * * 
    * 
   * * 
  * * * 
 * * * * 
* * * * *   

Filled Rhombus

Explanation:

  • The filled rhombus pattern consists of rows where each row is shifted to the right by spaces.
  • This creates a diamond-like shape with equal length sides.
printf("14. Filled Rhombus:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n - i - 1; j++) {
        printf(" ");
    }
    for (int j = 0; j < n; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}

Output:

    * * * * * 
   * * * * * 
  * * * * * 
 * * * * * 
* * * * *  

Filled Parallelogram

Explanation:

  • The filled parallelogram pattern is created by shifting each row to the right.
  • It looks like a rectangle leaning to one side.
printf("15. Filled Parallelogram:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n * 2; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}

Output:

* * * * * * * * * * 
 * * * * * * * * * * 
  * * * * * * * * * * 
   * * * * * * * * * * 
    * * * * * * * * * *  

Filled Hexagon

Explanation:

  • The filled hexagon pattern has a wider middle section, with each row increasing and then decreasing in width.
  • This creates a hexagonal shape.
printf("16. Filled Hexagon:\n");
for (int i = 0; i < n / 2; i++) {
    for (int j = n / 2 - i; j > 0; j--) {
        printf(" ");
    }
    for (int j = 0; j < n + 1 * i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = n / 2; i >= 0; i--) {
    for (int j = 0; j < n / 2 - i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n + i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}

Output:

  * * * * * 
 * * * * * * 
* * * * * * * 
 * * * * * * 
  * * * * *  

Filled Pentagon

Explanation:

  • The filled pentagon pattern starts with one character at the top and increases, forming a wider base.
  • This creates a pentagon-like shape.
printf("17. Filled Pentagon:\n");
for (int i = 0; i < n + 1; i++) {
    for (int j = n; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j < (i + 1); j++) {
        printf(" %c", ch);
    }
    printf("\n");
}
for (int i = n / 2; i >= 0; i--) {
    for (int j = 0; j < n / 2 - i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n + i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}

Output:

      *
     * *
    * * *
   * * * *
  * * * * *
 * * * * * *
* * * * * * * 
 * * * * * * 
  * * * * *  

Filled Inverted Pentagon

Explanation:

  • The filled inverted pentagon pattern is the inverted version of the filled pentagon.
  • It starts with the wider base and decreases, forming an inverted pentagon shape.
printf("18. Filled Inverted Pentagon:\n");
for (int i = 0; i <= n / 2; i++) {
    for (int j = 0; j < n / 2 - i; j++) {
        printf(" ");
    }
    for (int j = 0; j < n + i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}
for (int i = n + 1; i > 0; i--) {
    for (int j = n + 2; j > i; j--) {
        printf(" ");
    }
    for (int j = 0; j < i; j++) {
        printf("%c ", ch);
    }
    printf("\n");
}

Output:

  * * * * * 
 * * * * * * 
* * * * * * * 
 * * * * * * 
  * * * * * 
   * * * * 
    * * * 
     * * 
      *   

Conclusion

Learning to create these filled patterns in C is an excellent way to practice using nested loops and enhance your understanding of how loops work. By experimenting with different values and shapes, you can deepen your understanding of control structures in C and develop a keen eye for detail and logic. Whether you're a beginner or looking to brush up on your skills, these patterns provide a solid foundation for mastering loops in C programming.

We hope this guide has been helpful and encourages you to explore more complex patterns and designs. Happy coding!

For more tutorials and coding tips, be sure to subscribe to our blog and follow us on social media!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn