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

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

この記事では、C++を使って中空(ホロー)のピラミッドとダイヤモンドのパターンを生成する方法を解説します。塗りつぶし(ソリッド)のピラミッドパターンは比較的簡単に作成できますが、中空にするにはいくつかの工夫が必要です。ポイントは、ループと条件分岐を組み合わせて「星を出す位置」と「空白を入れる位置」を制御することです。

中空ピラミッドの出力

ピラミッドでは、1行目に星(*)を1つだけ出力し、最終行にはn個の星を連続して出力します。それ以外の行では、行頭と行末にちょうど2つの星を出力し、その間は空白で埋めます。これにより、輪郭だけの中空ピラミッドが完成します。

サンプルコード

#include <iostream>
using namespace std;
int main() {
    int n, i, j;
    cout << "Enter number of lines: ";
    cin >> n;
    for(i = 1; i<=n; i++) {
        for(j = 1; j<=(n-i); j++) { //星の前に空白を出力
            cout << " ";
        }
        if(i == 1 || i == n) { //最初と最後の行は星を連続出力
            for(j = 1; j<=i; j++) {
                cout << "* ";
            }
        }else{
            cout << "*"; //各行の先頭と末尾に星を出力
            for(j = 1; j<=2*i-3; j++) { //中空にするための空白を出力
                cout << " ";
            }
            cout << "*";
        }
        cout << endl;
    }
}

実行結果

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

中空ダイヤモンドの出力

ダイヤモンドでは、最初の行と最後の行に星を1つだけ出力します。その他の行では、行頭と行末に2つの星を出力し、間を空白で埋めます。ダイヤモンドは「上半分」と「下半分」の2つの部分に分かれており、上半分では空白の数を増やしながら幅を広げ、下半分では逆に空白の数を減らしながら幅を狭めていきます。ここでは mid という変数を使って行番号を2つの部分に分割し、処理を切り替えています。

サンプルコード

#include <iostream>
using namespace std;
int main() {
    int n, i, j, mid;
    cout << "Enter number of lines: ";
    cin >> n;
    if(n %2 == 1) { //nが奇数の場合は1増やして偶数にする
        n++;
    }
    mid = (n/2);
    for(i = 1; i<= mid; i++) {
        for(j = 1; j<=(mid-i); j++) { //星の前に空白を出力
            cout << " ";
        }
        if(i == 1) {
            cout << "*";
        }else{
            cout << "*"; //各行の先頭と末尾に星を出力
            for(j = 1; j<=2*i-3; j++) { //中空にするための空白を出力
                cout << " ";
            }
            cout << "*";
        }
        cout << endl;
    }
    for(i = mid+1; i<n; i++) {
        for(j = 1; j<=i-mid; j++) { //星の前に空白を出力
            cout << " ";
        }
        if(i == n-1) {
            cout << "*";
        }else{
            cout << "*"; //各行の先頭と末尾に星を出力
            for(j = 1; j<=2*(n - i)-3; j++) { //中空にするための空白を出力
                cout << " ";
            }
            cout << "*";
        }
        cout << endl;
    }
}

実行結果

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

  1. C言語でピラミッド型パターンを表示するプログラム

    プログラムの概要 ピラミッドとは、多角形の底面と、頂点(アペックス)と呼ばれる1点を結ぶことで形成される多面体です。底面の各辺と頂点を結んだ三角形は「側面」と呼ばれます。ピラミッドは、多角形を底面とする錐体の一種であり、底面が n 辺形であるピラミッドは、頂点が n+1 個、面が n+1 枚、辺が 2n 本あるという特徴を持ちます。また、すべてのピラミッドは自己双対であることも知られています。 アルゴリズム ユーザーからピラミッドの段数(行数)を入力してもらう 指定された行数に達するまでループを繰り返す: 1行目には星(*)を1つ表示する 行数に応じて星の数を増やしていく サンプルコード

  2. C言語でダイヤモンドパターンを出力するプログラム

    プログラムの概要 ダイヤモンドパターンは、正ピラミッドパターンと逆ピラミッドパターンを組み合わせたものです。上半分は数字が増えていくピラミッド形状、下半分はそれが逆さになった形状を出力することで、全体としてダイヤモンド(ひし形)が描かれます。 アルゴリズム このプログラムでは、1から始まる連続した数字を使ってダイヤモンド型のパターンを表示します。各行の出力内容は以下のとおりです。 1行目:1 を表示 2行目:1,2,3 を表示 3行目:1,2,3,4,5 を表示 4行目:1,2,3,4,5,6,7 を表示 5行目:1,2,3,4,5,6,7,8,9 を表示 6行目以降:5行目から4行目までの