【C言語】六角形パターンを出力するプログラムの作成方法
本記事では、整数「n」が与えられたとき、その値をもとにアスタリスク(*)で構成された六角形パターンを生成し、画面に出力するC言語プログラムを解説します。ループと条件分岐を組み合わせることで、きれいな六角形の図形をテキストベースで描くことができます。
実行例
入力:n = 5 の場合の出力は以下のようになります。

入力:n = 4 の場合の出力は以下のようになります。

プログラムの基本的なアプローチ
このプログラムでは、六角形パターンを以下の手順で作成しています。
- ユーザーから整数「n」を入力として受け取ります。
- パターン全体を「上部」「中央部」「下部」の3つの部分に分割して考えます。
- 上部を出力するため、ループ変数 i を 0 から n 未満まで1ずつ増やしながら処理します。
- 中央部を出力するため、ループ変数 m を 0 から n-2 未満まで1ずつ増やしながら処理します。
- 下部を出力するため、ループ変数 h を res から始めて h が 0 以上である間、1ずつ減らしながら処理します。
- 各行において、星印「*」を表示すべき位置には「*」を、それ以外の位置には空白を出力していきます。
アルゴリズム
開始 ステップ1 → 六角形パターンを出力する関数を定義する void pattern(int n) int len = 2 * n - 1 を宣言・設定する 繰り返し For int i = 0、i < n、i++ の間 int temp = i + n を宣言・設定する 繰り返し For int k = 0、k < temp、k++ の間 IF ((k == n + i - 1) || (k == n - i - 1)) 「*」を出力する 終了 ELSE 空白を出力する 終了 改行を出力する 終了 繰り返し For int m = 0、m < n - 2、m++ の間 繰り返し For int j = 0、j < len、j++ の間 if (j == 0 || j == len - 1) 「*」を出力する 終了 ELSE 空白を出力する 終了 終了 改行を出力する 終了 int res = n - 1 を宣言・設定する 繰り返し For int h = res、h >= 0、h-- の間 int temp2 = h + n を宣言・設定する 繰り返し For int k = 0、k < temp2、k++ の間 if ((k == n + h - 1) || (k == n - h - 1)) 「*」を出力する 終了 ELSE 空白を出力する 終了 終了 改行を出力する 終了 終了 ステップ2 → main() 内での処理 変数 int n = 5 を宣言する pattern(n) を呼び出す 終了
サンプルコード
#include <stdio.h>
// 六角形パターンを出力するプログラム
void pattern(int n) {
int len = 2 * n - 1;
// パターンの上部を出力するforループ
for (int i = 0; i < n; i++) {
int temp = i + n;
for (int k = 0; k < temp; k++) {
if ((k == n + i - 1) || (k == n - i - 1))
printf("*");
else
printf(" ");
}
printf("\n");
}
// パターンの中央部を出力するforループ
for (int m = 0; m < n - 2; m++) {
for (int j = 0; j < len; j++) {
if (j == 0 || j == len - 1)
printf("*");
else
printf(" ");
}
printf("\n");
}
// パターンの下部を出力するforループ
int res = n - 1;
for (int h = res; h >= 0; h--) {
int temp2 = h + n;
for (int k = 0; k < temp2; k++) {
if ((k == n + h - 1) || (k == n - h - 1))
printf("*");
else
printf(" ");
}
printf("\n");
}
}
int main() {
int n = 5;
pattern(n);
return 0;
}
出力結果
上記のコードを実行すると、入力した値 n に対応した大きさの六角形パターンがコンソールに出力されます。たとえば n = 5 の場合は、次のような六角形が表示されます。

このように、パターンを「上部」「中央部」「下部」の3つの領域に分けて考えることで、複雑な図形の出力処理もシンプルなロジックで実装できます。ぜひ n の値を変更して、さまざまなサイズの六角形パターンを試してみてください。
-
【初心者向け】平行四辺形の外周(周長)を計算するC言語プログラム
本記事では、2つの辺の長さが与えられた平行四辺形の外周(周囲の長さ)を計算し、その結果を表示するC言語プログラムを紹介します。数式の考え方からアルゴリズム、実際のコードまで順を追って解説していきます。 平行四辺形とは? 平行四辺形とは、次のような性質を持つ四角形の一種です。 向かい合う2組の辺がそれぞれ平行である 向かい合う角の大きさが互いに等しい 2本の対角線が互いの中点で交わる 下の図では、「a」と「b」が平行四辺形の隣り合う2つの辺の長さを表しています。 平行四辺形の外周の求め方 平行四辺形の外周(周長)は、次の式で定義されます。 外周 = 2 × (a + b) = 2 ×
-
C言語で作る!キラキラ点滅するクリスマスツリー表示プログラム
今回は少しユニークなプログラミング課題を紹介します。C言語を使って、クリスマスツリーをランダムに表示する方法です。完成したツリーは、本物のクリスマスイルミネーションのようにキラキラと点滅して見えます。 クリスマスツリーの表示の仕組み クリスマスツリーを描くには、大きさの異なる三角形(ピラミッド)をいくつも縦に積み重ねて出力します。装飾的な葉っぱの部分には、あらかじめ用意した文字リスト(.・*・+・o・O)の中からランダムに1文字を選んで表示します。 ツリーの高さやランダム性の度合いは、ソースコード冒頭のマクロ定数を書き換えるだけで自由に調整できます。 点滅が実現される仕組み このプログラムのポ