C言語でハート型パターンを表示するプログラムの書き方
この記事では、C言語を使ってコンソール上にハート型のパターン(アスキーアート)を表示する方法を解説します。完成すると、次のようなハート型の模様が出力されます。

パターンの構造を分析する
まず、このハート型パターンをよく観察してみましょう。パターンは大きく2つの部分に分けることができます。
- 上部:高さの異なる2つの山(ピーク)があり、その間に隙間が空いています。これがハートの膨らんだ部分に相当します。
- 下部:逆三角形で構成されており、ハートの先端部分に相当します。
このように各セクションに分解して考えることで、ループ処理を使ってそれぞれの部分を順番に出力し、全体としてハート型を描くコードを組み立てることができます。
サンプルコード
#include<stdio.h>
int main() {
int a, b, line = 12;
for (a = line/2; a <= line; a = a+2) { // ハートの上部
for (b = 1; b < line-a; b = b+2) // 最初の山の前に空白を挿入
printf(" ");
for (b = 1; b <= a; b++) // 最初の山を表示
printf("*");
for (b = 1; b <= line-a; b++) // 山と山の間の空白
printf(" ");
for (b = 1; b <= a-1; b++) // 2つ目の山を表示
printf("*");
printf("\n");
}
for (a = line; a >= 0; a--) { // ハートの下部(逆三角形)
for (b = a; b < line; b++) // 三角形の前に空白を挿入
printf(" ");
for (b = 1; b <= ((a * 2) - 1); b++) // 三角形を表示
printf("*");
printf("\n");
}
}コードのポイント解説
上部(2つの山)の出力
変数 line はパターンの基準となる行数です。最初のforループでは a を line/2 から開始し、2ずつ増やしながら各行を処理します。内側のループでは、以下の順番で出力を行います。
- 左側の余白(空白)を出力して最初の山の位置を調整
- 最初の山となるアスタリスク(
*)を出力 - 2つの山の間の隙間(空白)を出力
- 2つ目の山となるアスタリスクを出力
下部(逆三角形)の出力
2つ目のforループでは、a を line から0まで減少させながら処理します。各行ごとに、まず左側に空白を生成して三角形を中央に寄せ、その後 (a * 2) - 1 個のアスタリスクを出力することで、下に向かって幅が狭まる逆三角形を描きます。
実行結果
このプログラムをコンパイルして実行すると、冒頭の画像のような美しいハート型パターンが表示されます。line の値を変更すれば、ハートのサイズを調整することも可能です。ぜひいろいろな値を試してみてください。
-
C言語で数値パターンを出力するプログラムの作り方
プログラムの概要 このプログラムは、ユーザーから行数を入力してもらい、それに応じた数値パターンを画面に出力するものです。 例として、入力が「5行」の場合、次のようなパターンが出力されます。 1 6 2 10 7 3 13 11 8 4 15 14 12 9 5 一見複雑に見えるこのパターンにも、きちんとした規則性があります。各行の先頭の数値は「1、6、10、13、15」と増加幅が5→4→3→2と1ずつ減っていき、行の中でも右に進むほど差が大きくなる仕組みです。 アルゴリズム ・各行の末尾側から順にパターンを出力する ・まず各行の最後の列を確定させる ・2行目以降は後ろから2番目の列から出力を
-
【C言語】六角形パターンを出力するプログラムの作成方法
本記事では、整数「n」が与えられたとき、その値をもとにアスタリスク(*)で構成された六角形パターンを生成し、画面に出力するC言語プログラムを解説します。ループと条件分岐を組み合わせることで、きれいな六角形の図形をテキストベースで描くことができます。 実行例 入力:n = 5 の場合の出力は以下のようになります。 入力:n = 4 の場合の出力は以下のようになります。 プログラムの基本的なアプローチ このプログラムでは、六角形パターンを以下の手順で作成しています。 ユーザーから整数「n」を入力として受け取ります。 パターン全体を「上部」「中央部」「下部」の3つの部分に分割して考えます。