C言語

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


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

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

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

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

プログラム作成の手順

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

  1. 描画する四角形の幅width、高さheightを入力させる
  2. widthの値と同じ個数のアスタリスクと改行コードを表示する
  3. 2の手順をheightの値と同じ回数繰り返す

実装例

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

#include <stdio.h>

int main(void) {

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

  printf("Enter the width : \n");
  scanf("%d", &width);

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

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

  return 0;
}

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

Enter the width : 
5
Enter the height : 
4

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

応用:ひし形の描画

上記では正方形、長方形を描画するプログラムについて紹介しましたが、そのやり方を少し工夫すればひし形を描画することも可能です。

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

プログラム作成の手順

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

  1. 描画するひし形の幅width、高さheightを入力させる
  2. 「スペース + アスタリスク(widthと同じ個数)」を表示する
  3. スペースの個数を増やし or 減らしながら2をheight回繰り返す

実装例 その1

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

#include <stdio.h>

int main(void) {

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

  printf("Enter the width : \n");
  scanf("%d", &width);

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

  space = height - 1;

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

  return 0;
}

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

Enter the width : 
10
Enter the height : 
5

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

実装例 その2

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

#include <stdio.h>

int main(void) {

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

  printf("Enter the width : \n");
  scanf("%d", &width);

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

  space = 0;

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

  return 0;
}

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

Enter the width : 
10
Enter the height : 
5

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