Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でハート型パターンを表示するプログラムの書き方

この記事では、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ループでは aline/2 から開始し、2ずつ増やしながら各行を処理します。内側のループでは、以下の順番で出力を行います。

  1. 左側の余白(空白)を出力して最初の山の位置を調整
  2. 最初の山となるアスタリスク(*)を出力
  3. 2つの山の間の隙間(空白)を出力
  4. 2つ目の山となるアスタリスクを出力

下部(逆三角形)の出力

2つ目のforループでは、aline から0まで減少させながら処理します。各行ごとに、まず左側に空白を生成して三角形を中央に寄せ、その後 (a * 2) - 1 個のアスタリスクを出力することで、下に向かって幅が狭まる逆三角形を描きます。

実行結果

このプログラムをコンパイルして実行すると、冒頭の画像のような美しいハート型パターンが表示されます。line の値を変更すれば、ハートのサイズを調整することも可能です。ぜひいろいろな値を試してみてください。

  1. 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番目の列から出力を

  2. 【C言語】六角形パターンを出力するプログラムの作成方法

    本記事では、整数「n」が与えられたとき、その値をもとにアスタリスク(*)で構成された六角形パターンを生成し、画面に出力するC言語プログラムを解説します。ループと条件分岐を組み合わせることで、きれいな六角形の図形をテキストベースで描くことができます。 実行例 入力:n = 5 の場合の出力は以下のようになります。 入力:n = 4 の場合の出力は以下のようになります。 プログラムの基本的なアプローチ このプログラムでは、六角形パターンを以下の手順で作成しています。 ユーザーから整数「n」を入力として受け取ります。 パターン全体を「上部」「中央部」「下部」の3つの部分に分割して考えます。