C++でピラミッドパターンを作成するプログラムの書き方
C++では、ネストしたforループ(二重ループ)を組み合わせることで、さまざまなピラミッド状のパターンを簡単に出力できます。本記事では、その中でも特によく使われる「基本形のピラミッド」と「回転させたピラミッド」の2種類について、実際のコードと実行結果を交えながら詳しく解説します。
基本のピラミッドパターン
まずは、もっともシンプルな星(*)によるピラミッドパターンです。以下がその作成コードです。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int n = 6, i, j;
for (i=1; i<=n; i++) {
for(j=1; j<=i; j++ ) {
cout << "* ";
}
cout << endl;
}
return 0;
}
実行結果
* * * * * * * * * * * * * * * * * * * * *
コードの仕組み
このプログラムでは、ループ変数 i と j を持つ2つのforループを使用しています。
- 外側のforループ: ピラミッドの行数をカウントします。
- 内側のforループ: 各行に表示される星(*)の数を制御します。
つまり、i行目では内側のループがi回実行され、その行にちょうどi個の星が表示される仕組みです。該当する部分のコードは以下の通りです。
for (i=1; i<=n; i++) {
for(j=1; j<=i; j++ ) {
cout << "* ";
}
cout << endl;
}
回転させたピラミッドパターン
次に、右寄せに配置された回転型のピラミッドパターンです。各行の前にスペースを挿入することで、三角形が右側から積み上がるように見せています。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int n = 6, k = 2*n - 2;
for (int i=0; i<n; i++) {
for (int j=0; j<k; j++)
cout <<" ";
for (int j=0; j<=i; j++ )
cout << "* ";
k = k - 2;
cout << endl;
}
return 0;
}
実行結果
* * * * * * * * * * * * * * * * * * * * *
コードの仕組み
このプログラムでも、ループ変数 i と j を持つネストしたループ構造を使っています。ポイントは以下の通りです。
- k = 2*n - 2: 最初の行の先頭に挿入するスペースの総数を表します。
- 外側のforループ: ピラミッドの行数を管理します。
- 最初の内側のループ: 星を表示する前に出力するスペースの数を指定します。
- 次の内側のループ: 各行に出力される星の数を指定します。
- k = k - 2: 行が進むごとにスペースの数を2ずつ減らし、段階的に左へずらしていきます。
該当する部分のコードは以下の通りです。
for (int i=0; i<n; i++) {
for (int j=0; j<k; j++)
cout <<" ";
for (int j=0; j<=i; j++ )
cout << "* ";
k = k - 2;
cout << endl;
}
まとめ
ピラミッドパターンの作成は、二重ループの動作を理解するのに最適な練習問題です。「外側のループで行を制御し、内側のループで各要素を出力する」という基本構造さえ押さえれば、数字やアルファベットを使ったパターンなど、応用も自在に広げられます。ぜひ、行数や出力する文字を変えて試してみてください。
-
C++で解くドミノとトロミノを使ったタイル敷き詰め問題(2×Nボード)
問題の概要本記事では、「ドミノ」と「トロミノ」という2種類の形状を使ったタイル敷き詰め(タイリング)問題をC++で解く方法を解説します。これらのピースは、以下のように回転させて使用することができます。タイリングでは、盤面上のすべてのマスを必ずタイルで覆わなければなりません。また、2つのタイリング方法は、盤上の4方向に隣接する2つのセルにおいて、片方のタイリングだけがその両方のマスを同じタイルで占有している場合に限り「異なる」とみなされます。入力と出力の例整数Nが与えられたとき、2×Nのボードを敷き詰める方法が何通りあるかを求めます。例えば、入力が3の場合、出力は5となります。敷き詰め方は以下の
-
C++で中空ピラミッドとダイヤモンドパターンを出力するプログラムの作り方
この記事では、C++を使って中空(ホロー)のピラミッドとダイヤモンドのパターンを生成する方法を解説します。塗りつぶし(ソリッド)のピラミッドパターンは比較的簡単に作成できますが、中空にするにはいくつかの工夫が必要です。ポイントは、ループと条件分岐を組み合わせて「星を出す位置」と「空白を入れる位置」を制御することです。 中空ピラミッドの出力 ピラミッドでは、1行目に星(*)を1つだけ出力し、最終行にはn個の星を連続して出力します。それ以外の行では、行頭と行末にちょうど2つの星を出力し、その間は空白で埋めます。これにより、輪郭だけの中空ピラミッドが完成します。 サンプルコード #include &