C++で面白いパターンを出力するプログラムの作成方法
このチュートリアルでは、指定された面白いパターンを出力するC++プログラムについて解説します。
この問題では、パターンの半分の幅が入力として与えられます。私たちのタスクは、その幅に応じてパターンを出力することです。このパターンの特徴は、左右の部分が鏡像の関係になっている点にあります。いわゆる「蝶型(バタフライ)パターン」と呼ばれるものです。
パターンの出力方法
パターンは上半分と下半分に分けて出力します。各行では、左半分と右半分をそれぞれ別の条件で判定しながら、アスタリスク(*)または空白を出力していきます。
上半分では、行番号と列番号の大小関係を利用して、左側は三角形を広げ、右側はそれを鏡写しにした形を出力します。下半分では、その逆の条件を用いることで、全体として蝶の羽のような対称的なパターンが完成します。
サンプルコード
#include<stdio.h>
// 指定されたパターンを出力する関数
void print_pattern(int n){
int i,j;
// 上半分の出力
for (i=1; i<=n; i++){
for (j=1; j<=(2*n); j++){
// 左側の部分
if (i<j)
printf(" ");
else
printf("*");
// 右側の部分
if (i<=((2*n)-j))
printf(" ");
else
printf("*");
}
printf("\n");
}
// 下半分の出力
for (i=1; i<=n; i++){
for (j=1; j<=(2*n); j++){
// 左側の部分
if (i>(n-j+1))
printf(" ");
else
printf("*");
// 右側の部分
if ((i+n)>j)
printf(" ");
else
printf("*");
}
printf("\n");
}
}
int main(){
print_pattern(6);
return 0;
}出力結果
n = 6 を渡した場合、以下のようなパターンが出力されます。
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
プログラムの解説
このプログラムのポイントは、二重ループの中で条件分岐を使い分けることです。
上半分では、行番号 i が列番号 j より小さい場合に空白を出力し、それ以外でアスタリスクを出力します。右側も同様に、i が (2*n) - j 以下の場合に空白を出力します。
下半分では条件を反転させることで、幅が狭まっていく形を実現しています。このように左右それぞれ独立した条件で判定することで、鏡像の対称パターンを簡単に描画できます。
計算量は n 行 × 2n 列のループ処理となるため、O(n²) です。パターン出力系の問題では、行と列のインデックスの関係を数式で表現できるかが鍵となります。ぜひ n の値を変えて、さまざまなサイズのパターンを出力してみてください。
-
【C言語】数字パターンを出力するプログラムの作り方
プログラムの概要 数値パターンとは、「パターンルール」と呼ばれる規則に基づいて生成された数列のことです。パターンルールでは、1つまたは複数の数学的操作を用いて、数列内の連続する数値同士の関係を表現します。 C言語では、for文による繰り返し処理を組み合わせることで、このような規則性のある数字パターンを簡単に出力できます。本記事では、代表的な2種類のパターン(三角形型とひし形型)を出力するプログラムを紹介します。 パターンの例 パターン1(三角形型) 1 2 6 3 7 10 4 8 11 13 5 9 12 14 15 パターン1では、各行の先頭の数字が行番号と一致し、隣の要素は直前の値に「
-
C++で中空ピラミッドとダイヤモンドパターンを出力するプログラムの作り方
この記事では、C++を使って中空(ホロー)のピラミッドとダイヤモンドのパターンを生成する方法を解説します。塗りつぶし(ソリッド)のピラミッドパターンは比較的簡単に作成できますが、中空にするにはいくつかの工夫が必要です。ポイントは、ループと条件分岐を組み合わせて「星を出す位置」と「空白を入れる位置」を制御することです。 中空ピラミッドの出力 ピラミッドでは、1行目に星(*)を1つだけ出力し、最終行にはn個の星を連続して出力します。それ以外の行では、行頭と行末にちょうど2つの星を出力し、その間は空白で埋めます。これにより、輪郭だけの中空ピラミッドが完成します。 サンプルコード #include &