Rumah >pembangunan bahagian belakang >C++ >Menguasai Corak Penuh: Panduan Komprehensif dengan Contoh Kod

Menguasai Corak Penuh: Panduan Komprehensif dengan Contoh Kod

WBOY
WBOYasal
2024-07-18 21:23:21519semak imbas

Mastering Filled Patterns: A Comprehensive Guide with Code Examples

Selamat datang ke panduan komprehensif kami untuk mencipta pelbagai corak terisi menggunakan gelung dalam pengaturcaraan C! Dalam tutorial ini, kami akan melalui arahan langkah demi langkah tentang cara melukis 18 corak terisi yang berbeza. Corak ini terdiri daripada bentuk asas seperti segi empat sama dan segi tiga kepada bentuk yang lebih kompleks seperti berlian, heksagon dan pentagon. Setiap corak dicipta menggunakan gelung bersarang, menjadikannya latihan yang sangat baik untuk pemula untuk mempraktikkan struktur kawalan dalam C. Mari selami!
Anda boleh menemui semua kod dalam repositori GitHub kami.

Jadual Kandungan

  1. Pengenalan kepada Gelung Bersarang
  2. Petak Berisi
  3. Diisi Segitiga Kanan
  4. Diisi Segitiga Kanan Songsang
  5. Diisi Segitiga Jajaran Kanan
  6. Diisi Segitiga Terbalik Jajaran Kanan
  7. Diisi Segitiga Pascal Kanan
  8. Diisi Segitiga Pascal Kiri
  9. Segitiga Sama Sisi Terisi
  10. Segi Tiga Sama Sisi Terbalik Terpenuhi
  11. Piramid Berisi
  12. Piramid Terbalik Berisi
  13. Berlian Isi
  14. Jam Pasir Terisi
  15. Rhombus yang diisi
  16. Jalur selari terisi
  17. Heksagon Terisi
  18. Pentagon yang Terisi
  19. Pentagon Terbalik yang Diisi
  20. Kesimpulan

Pengenalan kepada Gelung Bersarang

Sebelum kita mula dengan corak, adalah penting untuk memahami konsep gelung bersarang. Gelung bersarang ialah gelung di dalam gelung lain. Struktur ini amat berguna untuk mengendalikan tatasusunan berbilang dimensi dan untuk menjana corak. Dalam C, struktur gelung bersarang biasa kelihatan seperti ini:

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

Dataran Penuh

Penjelasan:

  • Corak segi empat sama yang diisi ialah salah satu corak yang paling mudah untuk dibuat.
  • Ia terdiri daripada n baris dan n lajur, di mana setiap sel mengandungi aksara yang sama.
  • Kami menggunakan dua gelung bersarang untuk mengulangi setiap baris dan lajur, mencetak aksara dalam setiap sel.
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");
}

Output:

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

Diisi Segitiga Kanan

Penjelasan:

  • Corak segi tiga tepat yang diisi bermula dengan satu aksara dalam baris pertama dan bertambah satu aksara dalam setiap baris berikutnya.
  • Corak ini dicapai dengan menggunakan dua gelung bersarang. Gelung luar mengawal bilangan baris, dan gelung dalam mengawal bilangan aksara yang dicetak dalam setiap baris.
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");
}

Output:

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

Diisi Segitiga Kanan Songsang

Penjelasan:

  • Corak segi tiga tegak songsang diisi adalah bertentangan dengan segi tiga tegak terisi.
  • Ia bermula dengan n aksara dalam baris pertama dan berkurangan satu aksara dalam setiap baris berikutnya.
  • Sama seperti segi tiga tepat yang diisi, corak ini dibuat menggunakan dua gelung bersarang.
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");
}

Output:

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

Diisi Segitiga Jajaran Kanan

Penjelasan:

  • Corak segi tiga jajaran kanan yang diisi adalah serupa dengan segi tiga tepat yang diisi, tetapi segi tiga itu dijajarkan ke kanan.
  • Corak ini dicapai dengan menambahkan ruang sebelum setiap baris, mencipta rupa yang dijajarkan ke kanan.
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");
}

Output:

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

Diisi Segitiga Terbalik Jajaran Kanan

Penjelasan:

  • Corak segi tiga terbalik jajaran kanan yang diisi adalah bertentangan dengan segi tiga jajaran kanan yang diisi.
  • Ia bermula dengan satu aksara dalam baris pertama dan bertambah satu aksara dalam setiap baris berikutnya, tetapi segi tiga dijajarkan ke kanan.
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");
}

Output:

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

Diisi Segitiga Pascal Kanan

Penjelasan:

  • Corak segi tiga Pascal kanan yang diisi menggabungkan segi tiga tepat dan segi tiga tepat terbalik untuk membentuk segi tiga seperti Pascal.
  • Separuh pertama corak adalah serupa dengan segi tiga tegak terisi, dan separuh kedua adalah serupa dengan segi tiga tegak terbalik yang diisi.
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");
}

Output:

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

Diisi Segitiga Pascal Kiri

Penjelasan:

  • Corak segitiga Pascal kiri yang diisi adalah serupa dengan segi tiga Pascal kanan yang diisi, tetapi ia dijajar ke kiri.
  • Separuh pertama corak adalah serupa dengan segi tiga jajaran kanan yang diisi, dan separuh kedua adalah serupa dengan segi tiga terbalik jajaran kanan yang diisi.
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");
}

Output:

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

Diisi Segi Tiga Sama

Penjelasan:

  • Corak segi tiga sama sisi yang diisi mempunyai bentuk simetri dengan setiap baris berpusat.
  • Untuk mencapai matlamat ini, kami mencetak ruang sebelum setiap baris untuk memusatkan aksara.
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");
}

Output:

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

Diisi Segitiga Sama Sisi Songsang

Penjelasan:

  • Corak segi tiga sama sisi songsang diisi ialah versi songsang bagi segi tiga sama sisi diisi.
  • Ia bermula dengan n aksara di pangkal dan berkurangan sebanyak satu aksara setiap baris, berpusat.
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");
}

Output:

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

Piramid yang penuh

Penjelasan:

  • Corak piramid yang diisi bermula dengan satu aksara di bahagian atas dan meningkat sebanyak dua aksara setiap baris, membentuk piramid simetri.
  • Kami menggunakan ruang untuk memusatkan setiap baris.
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");
}

Output:

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

Piramid Terbalik yang Terisi

Penjelasan:

  • Corak piramid terbalik yang diisi adalah bertentangan dengan piramid yang diisi.
  • Ia bermula dengan 2 * n - 1 aksara di bahagian atas dan berkurangan sebanyak dua aksara setiap baris, berpusat.
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");
}

Output:

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

Berlian yang penuh

Penjelasan:

  • Corak berlian terisi dibentuk dengan menggabungkan segi tiga sama sisi terisi dan segitiga sama sisi terbalik terisi.
  • Ia menghasilkan bentuk berlian simetri.
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");
}

Output:

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

Jam pasir yang diisi

Penjelasan:

  • Corak jam pasir yang diisi menggabungkan segitiga sama sisi terbalik dan segitiga sama sisi, membentuk bentuk jam pasir.
  • Setiap baris dipusatkan dengan menambah ruang.
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!

Atas ialah kandungan terperinci Menguasai Corak Penuh: Panduan Komprehensif dengan Contoh Kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn