ホームページ > バックエンド開発 > C++ > 塗りつぶしパターンをマスターする: コード例を含む包括的なガイド

塗りつぶしパターンをマスターする: コード例を含む包括的なガイド

WBOY
リリース: 2024-07-18 21:23:21
オリジナル
522 人が閲覧しました

Mastering Filled Patterns: A Comprehensive Guide with Code Examples

C プログラミングでループを使用してさまざまな塗りつぶしパターンを作成するための包括的なガイドへようこそ!このチュートリアルでは、18 種類の塗りつぶしパターンを描画する方法を段階的に説明します。これらのパターンは、正方形や三角形などの基本的な形状から、ダイヤモンド、六角形、五角形などのより複雑な形状まで多岐にわたります。各パターンはネストされたループを使用して作成されているため、初心者が C の制御構造を練習するのに最適な練習になります。 それでは、詳しく見ていきましょう!
すべてのコードは GitHub リポジトリにあります。

目次

  1. ネストされたループの概要
  2. 塗りつぶされた四角形
  3. 塗りつぶされた直角三角形
  4. 塗りつぶされた逆直角三角形
  5. 塗りつぶされた右揃え三角形
  6. 塗りつぶされた右揃えの逆三角形
  7. 塗りつぶされたパスカルの右三角形
  8. 塗りつぶされた左パスカル三角形
  9. 塗りつぶされた正三角形
  10. 塗りつぶされた逆正三角形
  11. 塗りつぶされたピラミッド
  12. 塗りつぶされた逆ピラミッド
  13. 充填ダイヤモンド
  14. 満たされた砂時計
  15. 塗りつぶされたひし形
  16. 塗りつぶされた平行四辺形
  17. 塗りつぶされた六角形
  18. 塗りつぶされた五角形
  19. 塗りつぶされた逆五角形
  20. 結論

ネストされたループの概要

パターンを始める前に、ネストされたループの概念を理解することが重要です。ネストされたループは、別のループ内のループです。この構造は、多次元配列の処理やパターンの生成に特に役立ちます。 C では、典型的な入れ子になったループ構造は次のようになります。

for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        // Code to execute
    }
}
ログイン後にコピー

塗りつぶされた正方形

説明:

  • 塗りつぶされた正方形のパターンは、作成するのが最も簡単なパターンの 1 つです。
  • これは n 行 n 列で構成され、各セルには同じ文字が含まれます。
  • 2 つのネストされたループを使用して各行と列を反復し、各セルに文字を出力します。
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");
}
ログイン後にコピー

出力:

*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  
*  *  *  *  *  
ログイン後にコピー

塗りつぶされた直角三角形

説明:

  • 塗りつぶされた直角三角形のパターンは、最初の行の 1 文字で始まり、後続の行ごとに 1 文字ずつ増加します。
  • このパターンは、2 つのネストされたループを使用して実現されます。外側のループは行数を制御し、内側のループは各行に出力される文字数を制御します。
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");
}
ログイン後にコピー

出力:

*  
*  *  
*  *  *  
*  *  *  *  
*  *  *  *  *   
ログイン後にコピー

塗りつぶされた逆直角三角形

説明:

  • 塗りつぶされた逆直角三角形パターンは、塗りつぶされた直角三角形の反対です。
  • 最初の行は n 文字で始まり、後続の行ごとに 1 文字ずつ減少します。
  • 塗りつぶされた直角三角形と同様に、このパターンは 2 つのネストされたループを使用して作成されます。
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");
}
ログイン後にコピー

出力:

*  *  *  *  *  
*  *  *  *  
*  *  *  
*  *  
*  
ログイン後にコピー

塗りつぶされた右揃えの三角形

説明:

  • 塗りつぶされた右揃えの三角形パターンは塗りつぶされた直角三角形と似ていますが、三角形は右揃えです。
  • このパターンは、各行の前にスペースを追加して、右揃えの外観を作成することによって実現されます。
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");
}
ログイン後にコピー

出力:

            *  
         *  *  
      *  *  *  
   *  *  *  *  
*  *  *  *  * 
ログイン後にコピー

塗りつぶされた右揃えの逆三角形

説明:

  • 塗りつぶされた右揃えの逆三角形パターンは、塗りつぶされた右揃えの三角形の逆です。
  • 最初の行の 1 文字から始まり、後続の行ごとに 1 文字ずつ増加しますが、三角形は右揃えになります。
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");
}
ログイン後にコピー

出力:

*  *  *  *  *  
   *  *  *  *  
      *  *  *  
         *  *  
            *  
ログイン後にコピー

パスカルの塗りつぶされた右三角形

説明:

  • 塗りつぶされたパスカル右三角形パターンは、直角三角形と逆直角三角形を組み合わせて、パスカルのような三角形を形成します。
  • パターンの前半は塗りつぶされた直角三角形に似ており、後半は塗りつぶされた逆直角三角形に似ています。
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");
}
ログイン後にコピー

出力:

*  
*  *  
*  *  *  
*  *  *  *  
*  *  *  *  *  
*  *  *  *  
*  *  *  
*  *  
*    
ログイン後にコピー

塗りつぶされた左パスカル三角形

説明:

  • 塗りつぶされた左パスカル三角形パターンは、塗りつぶされた右パスカル三角形パターンに似ていますが、左揃えです。
  • パターンの前半は塗りつぶされた右揃えの三角形に似ており、後半は塗りつぶされた右揃えの逆三角形に似ています。
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");
}
ログイン後にコピー

出力:

            *  
         *  *  
      *  *  *  
   *  *  *  *  
*  *  *  *  *  
   *  *  *  *  
      *  *  *  
         *  *  
            *   
ログイン後にコピー

塗りつぶされた正三角形

説明:

  • 塗りつぶされた正三角形のパターンは、各行を中心にして対称的な形状になります。
  • これを実現するために、各行の前にスペースを印刷して文字を中央に配置します。
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");
}
ログイン後にコピー

出力:

    * 
   * * 
  * * * 
 * * * * 
* * * * *  
ログイン後にコピー

塗りつぶされた逆正三角形

説明:

  • 塗りつぶされた逆正三角形パターンは、塗りつぶされた正三角形の反転バージョンです。
  • 基本は n 文字で始まり、中央揃えで行ごとに 1 文字ずつ減少します。
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");
}
ログイン後にコピー

出力:

* * * * * 
 * * * * 
  * * * 
   * * 
    *   
ログイン後にコピー

満たされたピラミッド

説明:

  • 塗りつぶされたピラミッド パターンは、一番上の 1 文字から始まり、1 行あたり 2 文字ずつ増加し、対称的なピラミッドを形成します。
  • スペースを使用して各行を中央に配置します。
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");
}
ログイン後にコピー

出力:

    *
   ***
  *****
 *******
*********  
ログイン後にコピー

塗りつぶされた逆ピラミッド

説明:

  • 塗りつぶされた逆ピラミッド パターンは、塗りつぶされたピラミッドの逆です。
  • 先頭の 2 * n - 1 文字で始まり、中央に向かって行ごとに 2 文字ずつ減少します。
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");
}
ログイン後にコピー

出力:

*********
 *******
  *****
   ***
    *  
ログイン後にコピー

埋め尽くされたダイヤモンド

説明:

  • 塗りつぶされた菱形パターンは、塗りつぶされた正三角形と塗りつぶされた逆正三角形を組み合わせて形成されます。
  • 対称的なひし形の形状を作成します。
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");
}
ログイン後にコピー

出力:

    * 
   * * 
  * * * 
 * * * * 
* * * * * 
 * * * * 
  * * * 
   * * 
    *  
ログイン後にコピー

満たされた砂時計

説明:

  • 塗りつぶされた砂時計パターンは、逆正三角形と正三角形を組み合わせて砂時計の形を形成します。
  • スペースを追加すると、各行が中央に配置されます。
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!

以上が塗りつぶしパターンをマスターする: コード例を含む包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート