C言語

【C言語】アスタリスクで「三角形」を描画する


プログラミング初心者向けの練習問題として「アスタリスク(*)を羅列して図形を描画する」というものがあります。

本記事では、アスタリスクで「三角形」を描画する方法について解説します。

実際にプログラムを作成してみる

早速ですが、実際にプログラムを作成していきます。

プログラム作成の手順

プログラム作成の手順は以下の通りです。

  1. 描画する三角形の高さheightを入力させる
  2. n個のアスタリスクと改行コードを表示する
  3. 2の手順をheightの値と同じ回数繰り返す(nは1ずつ増加)

実装例(スペース無)

上記の手順に従ってプログラムを作成します。

#include <stdio.h>

int main(void) {

  /* 変数を定義する */
  int height;

  printf("Enter a number : \n");
  scanf("%d", &height);
  printf("\n");

  /* アスタリスクで三角形を描画する */
  for(int i=0; i<height; i++){
    for(int j=0; j<i+1; j++){
      printf("*");
    }
    printf("\n");
  }

  return 0;
}

このプログラムを実行すると以下の出力結果が得られます。

Enter a number : 
5

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

実装例(スペース有)

上記の手順に従ってプログラムを作成します。

#include <stdio.h>

int main(void) {

  /* 変数を定義する */
  int height;

  printf("Enter a number : \n");
  scanf("%d", &height);
  printf("\n");

  /* アスタリスクで三角形を描画する */
  for(int i=0; i<height; i++){
    for(int j=0; j<height-(i+1); j++){
      printf(" ");
    }
    for(int j=0; j<i+1; j++){
      printf("*");
    }
    printf("\n");
  }

  return 0;
}

このプログラムを実行すると以下の出力結果が得られます。

Enter a number : 
5

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

応用:ピラミッド型の三角形を描画

上記では直角三角形の描画するプログラムについて紹介しましたが、やり方を工夫すれば二等辺三角形(ピラミッド型)を描画することも可能です。

ここでは、その方法について説明します。

プログラム作成の手順

プログラム作成の手順は以下の通りです。

  1. 描画する三角形の高さheightを入力させる
  2. heightの値から各列のアスタリスク、スペースの個数を求める
  3. 2の結果に従ってアスタリスク、スペースを表示する

実装例

上記の手順に従ってプログラムを作成します。

#include <stdio.h>

int main(void) {

  /* 変数を定義する */
  int height, width, max_width, space;

  printf("Enter a number : \n");
  scanf("%d", &height);
  printf("\n");

  max_width = (height - 1) * 2 + 1;

  /* アスタリスクでピラミッドを描画する */
  for(int i=0; i<height; i++){
    width = i * 2 + 1;
    space = (max_width - width) / 2;
    for(int j=0; j<space; j++){
      printf(" ");
    }
    for(int j=0; j<width; j++){
      printf("*");
    }
    printf("\n");
  }

  return 0;
}

このプログラムを実行すると以下の出力結果が得られます。

Enter a number : 
5

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