[C言語] *(アスタリスク)でピラミッドをwhile文で作る方法

C言語でアスタリスクを使ってピラミッドを描画するには、while文を活用する方法があります。

この方法では、まず行数を決定し、各行に対して適切な数のスペースとアスタリスクを出力します。

スペースはピラミッドの形を整えるために必要で、アスタリスクは実際のピラミッドを形成します。

各行のスペースとアスタリスクの数は、行番号に基づいて計算されます。

このようにして、while文を使って効率的にピラミッドを描画することが可能です。

この記事でわかること
  • C言語でのピラミッド作成の基本手順
  • while文を用いた行の制御方法
  • ユーザー入力によるピラミッドの高さ変更
  • 逆ピラミッドや複数ピラミッドの描画方法
  • アスタリスク以外の文字を用いたピラミッド作成方法

目次から探す

C言語でのピラミッド作成手順

C言語でアスタリスクを使ってピラミッドを描画する方法について解説します。

このセクションでは、プログラムの初期設定から、while文を用いた制御方法、アスタリスクと空白の出力方法、そしてピラミッドの高さを制御する方法について詳しく説明します。

初期設定と変数の宣言

ピラミッドを描画するためには、まず必要な変数を宣言し、初期設定を行います。

以下に基本的な変数の宣言を示します。

#include <stdio.h>
int main() {
    int height; // ピラミッドの高さ
    int row, space, star; // 行、空白、アスタリスクのカウンタ
    height = 5; // ピラミッドの高さを5に設定
    return 0;
}

このコードでは、ピラミッドの高さを指定するための変数heightと、行、空白、アスタリスクを制御するためのカウンタ変数を宣言しています。

while文を使った行の制御

次に、while文を使ってピラミッドの各行を制御します。

行の数はピラミッドの高さに依存します。

row = 1;
while (row <= height) {
    // 各行の処理をここに記述
    row++;
}

このコードでは、rowheightに達するまでループを繰り返し、各行の処理を行います。

アスタリスクの出力方法

各行におけるアスタリスクの出力は、行番号に応じて増加します。

以下にアスタリスクを出力するコードを示します。

star = 1;
while (star <= 2 * row - 1) {
    printf("*");
    star++;
}

このコードでは、各行に出力するアスタリスクの数を2 * row - 1として計算し、while文でその数だけアスタリスクを出力します。

空白の出力方法

ピラミッドの形を整えるためには、アスタリスクの前に適切な数の空白を出力する必要があります。

space = 1;
while (space <= height - row) {
    printf(" ");
    space++;
}

このコードでは、各行の先頭に出力する空白の数をheight - rowとして計算し、while文でその数だけ空白を出力します。

ピラミッドの高さを制御する

ピラミッドの高さを制御するためには、変数heightの値を変更するだけで簡単に調整できます。

ユーザーからの入力を受け付ける場合は、以下のようにします。

printf("ピラミッドの高さを入力してください: ");
scanf("%d", &height);

このコードを使用することで、ユーザーが任意の高さを入力し、その高さに応じたピラミッドを描画することができます。

以上が、C言語でアスタリスクを使ってピラミッドを描画する基本的な手順です。

次のセクションでは、応用例について解説します。

応用例

C言語でのピラミッド作成は、基本的な形を理解した後にさまざまな応用が可能です。

ここでは、ピラミッドの高さをユーザー入力で変更する方法、逆ピラミッドの作成、複数のピラミッドを連続して表示する方法、そしてピラミッドの幅を変える方法について解説します。

ピラミッドの高さをユーザー入力で変更する

ユーザーからピラミッドの高さを入力してもらうことで、動的にピラミッドを描画することができます。

以下のコードはその実装例です。

#include <stdio.h>
int main() {
    int height, row, space, star;
    printf("ピラミッドの高さを入力してください: ");
    scanf("%d", &height);
    row = 1;
    while (row <= height) {
        space = 1;
        while (space <= height - row) {
            printf(" ");
            space++;
        }
        star = 1;
        while (star <= 2 * row - 1) {
            printf("*");
            star++;
        }
        printf("\n");
        row++;
    }
    return 0;
}

このプログラムでは、ユーザーが入力した高さに基づいてピラミッドを描画します。

逆ピラミッドの作成方法

逆ピラミッドを作成するには、アスタリスクの数を減少させるように制御します。

以下にその例を示します。

#include <stdio.h>
int main() {
    int height, row, space, star;
    printf("逆ピラミッドの高さを入力してください: ");
    scanf("%d", &height);
    row = height;
    while (row > 0) {
        space = 1;
        while (space <= height - row) {
            printf(" ");
            space++;
        }
        star = 1;
        while (star <= 2 * row - 1) {
            printf("*");
            star++;
        }
        printf("\n");
        row--;
    }
    return 0;
}

このプログラムでは、行数を減少させることで逆ピラミッドを描画します。

複数のピラミッドを連続して表示する

複数のピラミッドを連続して表示するには、ピラミッド描画のループを繰り返すようにします。

以下にその例を示します。

#include <stdio.h>
int main() {
    int height, row, space, star, count, numPyramids;
    printf("表示するピラミッドの数を入力してください: ");
    scanf("%d", &numPyramids);
    printf("各ピラミッドの高さを入力してください: ");
    scanf("%d", &height);
    count = 0;
    while (count < numPyramids) {
        row = 1;
        while (row <= height) {
            space = 1;
            while (space <= height - row) {
                printf(" ");
                space++;
            }
            star = 1;
            while (star <= 2 * row - 1) {
                printf("*");
                star++;
            }
            printf("\n");
            row++;
        }
        printf("\n"); // 各ピラミッドの間に空行を挿入
        count++;
    }
    return 0;
}

このプログラムでは、指定された数のピラミッドを連続して表示します。

ピラミッドの幅を変える方法

ピラミッドの幅を変えるには、アスタリスクの出力数を調整します。

以下にその例を示します。

#include <stdio.h>
int main() {
    int height, row, space, star, widthFactor;
    printf("ピラミッドの高さを入力してください: ");
    scanf("%d", &height);
    printf("幅の倍率を入力してください: ");
    scanf("%d", &widthFactor);
    row = 1;
    while (row <= height) {
        space = 1;
        while (space <= height - row) {
            printf(" ");
            space++;
        }
        star = 1;
        while (star <= widthFactor * (2 * row - 1)) {
            printf("*");
            star++;
        }
        printf("\n");
        row++;
    }
    return 0;
}

このプログラムでは、widthFactorを用いてピラミッドの幅を調整します。

ユーザーが入力した倍率に応じて、アスタリスクの数が変わります。

よくある質問

while文とfor文のどちらが良いのか?

while文とfor文のどちらを使用するかは、プログラムの目的や個人の好みによります。

while文は条件が真である限りループを続けるため、条件が動的に変化する場合に適しています。

一方、for文は初期化、条件判定、更新を一行で記述できるため、ループの回数が明確な場合に便利です。

ピラミッドのようにループの回数が決まっている場合は、for文を使うとコードが簡潔になります。

ピラミッドの高さを動的に変更するには?

ピラミッドの高さを動的に変更するには、ユーザーからの入力を受け付けるようにプログラムを設計します。

例:scanf("%d", &height);を使用して、ユーザーが入力した値を変数heightに格納し、その値を基にピラミッドを描画します。

これにより、実行時に高さを変更することが可能です。

アスタリスク以外の文字でピラミッドを作るには?

アスタリスク以外の文字でピラミッドを作成するには、出力する文字を変更するだけです。

例:printf("*");の部分をprintf("#");に変更することで、アスタリスクの代わりにシャープ記号を使用してピラミッドを描画できます。

任意の文字を使用する場合は、変数を用いて文字を指定することも可能です。

まとめ

C言語でのピラミッド作成は、基本的なループ制御を学ぶ良い練習になります。

この記事では、while文を用いたピラミッドの描画方法から、応用例として高さの動的変更や逆ピラミッドの作成方法を解説しました。

これらの知識を活用して、さまざまな形状の図形を描画するプログラムに挑戦してみてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • 初学者向け (30)
  • URLをコピーしました!
目次から探す