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ループと空白・記号の個数管理を組み合わせることで、さまざまな図形パターンを柔軟に表現できます。
-
【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 &