Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【C言語入門】forループでピラミッドや直角三角形などさまざまなパターンを出力する方法

問題

C言語において、ピラミッドや直角三角形のように、数字や記号をさまざまな形式(パターン)で出力するには、どのようなロジックを組めばよいのでしょうか?

解決策

数字や記号をさまざまなパターンで出力するには、forループを活用します。基本となる考え方は次のとおりです。

  • 外側のループ:現在何行目を出力しているかを制御します。
  • 内側のループ:その行に出力する空白・数字・記号の個数を制御します。

この「二重ループ」を組み合わせることで、行ごとの出力内容を柔軟に変化させ、目的の図形パターンを描くことができます。

例1:ピラミッドを出力するCプログラム

以下は、入力された行数分だけ星印(*)でピラミッドを表示するCプログラムです。各行では、まず中央寄せのための空白を出力し、その後に奇数個の「*」を出力しています。

#include <stdio.h>
int main(){
    int n;
    printf("Enter number of lines: ");
    scanf("%d", &n);
    printf("\n");
    /* 行数分だけ繰り返す */
    for(int i = 1; i <= n; i++){
        /* 各行の先頭に入れる空白を出力 */
        for(int space = 0; space <= n - i; space++){
            printf(" ");
        }
        /* 星印(*)を出力 */
        for(int j = 1; j <= i * 2 - 1; j++){
            printf(" * ");
        }
        printf("\n");
    }
    return 0;
}

実行結果

Enter number of lines: 8
               *
             * * *
           * * * * *
         * * * * * * *
       * * * * * * * * *
     * * * * * * * * * * *
   * * * * * * * * * * * * *
 * * * * * * * * * * * * * * *

例2:直角三角形のパターンで数字を表示するプログラム

次は、行数を入力すると、各行に1から順に数字を並べて直角三角形の形に表示するプログラムです。i行目には「1からiまで」の数字が出力されます。

#include <stdio.h>
void main(){
    int i, j, rows;
    printf("Input number of rows : ");
    scanf("%d", &rows);
    for(i = 1; i <= rows; i++){
        for(j = 1; j <= i; j++)
            printf("%d", j);
        printf("\n");
    }
}

実行結果

Input number of rows : 10
1
12
123
1234
12345
123456
1234567
12345678
123456789
12345678910

まとめ

このように、二重のforループを使えば、空白の数や出力する文字の個数を行ごとに制御でき、ピラミッドや直角三角形など多彩なパターンを簡単に描くことができます。ループの条件式を少し変えるだけでまったく別の模様になるため、ぜひいろいろな値を試して動きを確認してみてください。

  1. C言語でN番目の項までの五胞体数を出力するプログラム

    五胞体数(ペンタトープ数)とは 五胞体数とは、パスカルの三角形の各行に現れる5番目の数のことで、「1 4 6 4 1」という5項目の行から始まり、行を左から右へ、あるいは右から左へ読んだときに位置する数です。 五胞体数の最初のいくつかは次のとおりです。 1, 5, 15, 35, 70, 126, 210, 330, 495, 715, 1001, 1365 五胞体数は、規則的で離散的な幾何学パターンとして表現できる「図形数」の一種です。4次元の単体である五胞体に対応する数列であり、三角形数や四角錐数などをさらに一般化した概念といえます。 n番目の五胞体数を求める公式 n番目の五胞体数は、二

  2. C言語で正方行列をZ字形に表示するプログラム

    プログラムの概要本記事では、C言語を使って正方行列の要素を「Z」の字形に沿って出力するプログラムを解説します。正方行列とは、行数と列数が等しい行列のことです。n行n列の行列は「n次の正方行列」と呼ばれ、2×2、3×3、4×4などの行列が該当します。Z字形出力のアルゴリズム行列の要素をZ字形で表示するには、次の3つの部分を順番に出力します。最上行(1行目):左端から右端までのすべての要素対角成分:右上から左下へ向かう斜めの要素(両端の角は除く)最下行(最終行):すべての要素これらを順につなげると、アルファベットの「Z」の形が完成します。3×3の行列の場合: a00 a01 a02