【プログラミング問題1】ピラミッドの出力

プログラミング問題

プログラミング初学者のためのプログラミング問題1「ピラミッドの出力」です。

本問題は標準出力への出力を想定していますが、問題の本質はアルゴリズムをコードに落とし込むことなのでブラウザへの出力など他の出力を使用しても問題ありません。

解答例はC言語で紹介しますが、各自の環境で実行可能なプログラミング言語を使用して挑戦してみてください。

問題

標準入力もしくは定数によりピラミッドの段数を指定し、指定された段数に応じて以下のようなピラミッドを出力せよ。(以下は5段のピラミッドの例)

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

考え方

5段のピラミッドの例の場合で考えると、各段は以下のように構成されています。

段数スペースアスタリスク
1段目4個1個
2段目3個3個
3段目2個5個
4段目1個7個
5段目0個9個

ピラミッドの段数である5を定数Nに代入して、各段数をiとすると「スペースの数 = N – i」「アスタリスクの数 = 2 * i – 1」として表すことができます。

上記の計算式に従って、1段目から順に出力することでピラミッドを出力することができます。

解答例(C言語)

#include <stdio.h>

int main()
{
    int N, i, j;

    // 標準入力からピラミッドの段数取得
    scanf("%d", &N);

    // 段数ごとに処理
    for (i = 1; i <= N; i++)
    {
        // スペースの出力
        for (j = 1; j <= N - i; j++)
        {
            printf(" ");
        }
        // アスタリスクの出力
        for (j = 1; j <= 2 * i - 1; j++)
        {
            printf("*");
        }
        // 改行の出力
        printf("\n");
    }

    return 0;
}

考え方での説明の中でわかりやすくするためにループを1から開始していますが、理解できている方は0からでも良いです。

コメント

タイトルとURLをコピーしました