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

【C++】逆ピラミッド型の文字パターンを出力するプログラムの作り方

本記事では、C++を使って逆ピラミッド型の文字パターンを出力するプログラムについて解説します。

問題の概要

逆ピラミッド(下向きの三角形)を構成する「行数」が与えられます。私たちの課題は、その行数に応じてアルファベットを出力し、逆ピラミッドの形を完成させることです。

たとえば5行が指定された場合、1行目には A〜E を対称に出力し、行が進むごとに文字数を1組ずつ減らしながら、中央に寄せていくことで逆ピラミッドを描きます。

C++による実装例

#include <bits/stdc++.h>
using namespace std;
// 逆ピラミッドパターンを出力する関数
void inv_pyramid(int n){
    int i, j, num, gap;
    for (i = n; i >= 1; i--) {
        // 中央揃えのための空白を出力
        for (gap = n - 1; gap >= i; gap--) {
            cout<<" ";
            cout<<" ";
        }
        num = 'A';
        // 左半分:Aから昇順に出力
        for (j = 1; j <= i; j++) {
            cout << (char) num++ <<" ";
        }
        // 右半分:降順で出力して対称にする
        for (j = i - 1; j >= 0; j--) {
            cout << (char) --num <<" ";
        }
        cout<<"\n";
    }
}
int main(){
    int n = 5;
    inv_pyramid(n);
    return 0;
}

出力結果

A B C D E E D C B A
 A B C D D C B A
  A B C C B A
   A B B A
    A A

プログラムの解説

このプログラムのロジックは以下の通りです。

  • 外側のループ: 変数 in から 1 まで減少させながら、各行の処理を行います。行が進むほど出力する文字数が減っていきます。
  • 空白の出力: 内側の最初のループで空白(スペース2つ分)を出力し、段々と中央に寄せた形を作ります。
  • 左半分の出力: 変数 num を 'A' の文字コードで初期化し、昇順にアルファベットを出力していきます。
  • 右半分の出力: 同じ変数 num をデクリメントしながら降順に出力することで、左右対称のパターンを実現しています。

このように、ネストしたforループを組み合わせるだけで、規則的な図形パターンを簡単に生成できます。ループ処理の理解を深める練習問題としても最適なので、ぜひ行数 n の値を変更して動作を確かめてみてください。

  1. C++でピラミッドの体積を計算するプログラムの作り方|底面の形状別の公式と実装例

    ピラミッドの底面の種類に応じた辺の長さが与えられたとき、そのピラミッドの体積を計算するのが本記事のテーマです。 ピラミッドとは、外側の面がすべて三角形で構成され、それらが共通の一点(頂点)で交わることで鋭い角を形成する3次元図形です。ピラミッドの体積は、底面がどのような形状であるかによって異なります。 ピラミッドの底面にはさまざまな種類があり、代表的なものは以下の通りです。 底面の形状別の体積の求め方 三角形の底面(三角錐) 底面が三角形の場合、ピラミッドの体積は次の公式で求められます。 体積 = (1/6) × a × b × h 正方形の底面(四角錐) 底面が正方形の場合、ピラミッドの体

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

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