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

C++でカイト(凧)パターンを出力するプログラムの作り方

このチュートリアルでは、指定されたカイト(凧)型のパターンをコンソールに出力するC++プログラムについて解説します。

ここでは入力として N=5 を使用します。全体の出力は 2N+1 = 11 行で構成され、そのうち9行が上側のダイヤモンド(ひし形)構造、残りの2行が下側の不完全なダイヤモンド構造に対応します。各行ごとに出力する空白の数と「$」記号の数を制御することで、凧のような形状を作り出しています。

サンプルコード

#include <bits/stdc++.h>
#include <stdlib.h>
using namespace std;
int main(){
    int i, j, k, sp, space = 4;
    char prt = '$';
    //最初のダイヤモンドの上半分を出力
    for (i = 1; i <= 5; i++){
        //行頭の空白を出力
        for (sp = space; sp >= 1; sp--){
            cout << " ";
        }
        //$記号を出力
        for (j = 1; j <= i; j++){
            cout << prt;
        }
        for (k = 1; k <= (i - 1); k++){
            if (i == 1){
                continue;
            }
            cout << prt;
        }
        cout << "\n";
        space--;
    }
    space = 1;
    //最初のダイヤモンドの下半分を出力
    for (i = 4; i >= 1; i--){
        for (sp = space; sp >= 1; sp--) {
            cout << " ";
        }
        for (j = 1; j <= i; j++){
            cout << prt;
        }
        for (k = 1; k <= (i - 1); k++){
            cout << prt;
        }
        space++;
        cout << "\n";
    }
    space = 3;
    //2つ目の不完全なダイヤモンド(凧の尾)を出力
    for (i = 2; i <= 5; i++){
        if ((i % 2) != 0){
            for (sp = space; sp >= 1; sp--){
                cout << " ";
            }
            for (j = 1; j <= i; j++){
                cout << prt;
            }
        }
        if ((i % 2) != 0) {
            cout << "\n";
            space--;
        }
    }
    return 0;
}

実行結果

     $
    $$$
   $$$$$
  $$$$$$$
 $$$$$$$$$
  $$$$$$$
   $$$$$
    $$$
     $
    $$$
   $$$$$

プログラムの仕組み

このプログラムは、大きく3つの部分に分かれています。

まず最初のループでは、空白の数を4から1ずつ減らしながら「$」記号を増やしていくことで、ダイヤモンドの上半分(幅が広がっていく部分)を出力します。次のループでは逆に、空白を増やしながら記号を減らすことで下半分(幅が狭まっていく部分)を出力し、完全なひし形を完成させます。

最後のループでは、奇数行のみを出力対象とすることで、凧の尾にあたる小さな不完全なダイヤモンドを2行だけ描画しています。このように、ネストしたforループと空白・記号の個数管理を組み合わせることで、さまざまな図形パターンを柔軟に表現できます。

  1. 【C言語】数字パターンを出力するプログラムの作り方

    プログラムの概要 数値パターンとは、「パターンルール」と呼ばれる規則に基づいて生成された数列のことです。パターンルールでは、1つまたは複数の数学的操作を用いて、数列内の連続する数値同士の関係を表現します。 C言語では、for文による繰り返し処理を組み合わせることで、このような規則性のある数字パターンを簡単に出力できます。本記事では、代表的な2種類のパターン(三角形型とひし形型)を出力するプログラムを紹介します。 パターンの例 パターン1(三角形型) 1 2 6 3 7 10 4 8 11 13 5 9 12 14 15 パターン1では、各行の先頭の数字が行番号と一致し、隣の要素は直前の値に「

  2. C++で中空ピラミッドとダイヤモンドパターンを出力するプログラムの作り方

    この記事では、C++を使って中空(ホロー)のピラミッドとダイヤモンドのパターンを生成する方法を解説します。塗りつぶし(ソリッド)のピラミッドパターンは比較的簡単に作成できますが、中空にするにはいくつかの工夫が必要です。ポイントは、ループと条件分岐を組み合わせて「星を出す位置」と「空白を入れる位置」を制御することです。 中空ピラミッドの出力 ピラミッドでは、1行目に星(*)を1つだけ出力し、最終行にはn個の星を連続して出力します。それ以外の行では、行頭と行末にちょうど2つの星を出力し、その間は空白で埋めます。これにより、輪郭だけの中空ピラミッドが完成します。 サンプルコード #include &