C++で数字パターンを出力するプログラムの作成方法
はじめに
この記事では、C++を使って特定の数字パターンを出力するプログラムについて詳しく解説します。
今回の課題は、ループ構造(for文)を活用して、以下のようなピラミッド状の数字パターンをコンソールに出力することです。
1 232 34543 4567654 567898765
パターンの特徴
このパターンには以下のような規則性があります。
- n行目は数字nから始まり、1ずつ増加しながら中央まで進みます
- 中央を過ぎたら、今度は1ずつ減少しながら元の数字まで戻ります
- 各行の先頭には、行番号に応じた数の空白が出力されます
サンプルコード
#include<bits/stdc++.h>
using namespace std;
int main(){
int n = 5, i, j, num = 1, gap;
gap = n - 1;
for ( j = 1 ; j <= n ; j++ ){
num = j;
for ( i = 1 ; i <= gap ; i++ )
cout << " ";
gap--;
for ( i = 1 ; i <= j ; i++ ){
cout << num;
num++;
}
num--;
num--;
for ( i = 1 ; i < j ; i++){
cout << num;
num--;
}
cout << "\n";
}
return 0;
}コードの解説
プログラムの処理の流れは以下の通りです。
- 変数の初期化: 行数 n を5に設定し、空白の数を表す gap は n - 1 で初期化します。
- 外側のループ: 変数 j が1から n まで繰り返され、各行ごとの処理を行います。
- 空白の出力: 最初の内側ループで gap の数だけ空白を出力し、その後 gap を1減らします。これにより、下の行ほど左に寄ったピラミッド形状が実現されます。
- 増加部分の出力: num を行番号 j で初期化し、j 回だけ数字を出力しながら1ずつ増加させます。
- 減少部分の出力: num を2回デクリメントして頂点の次の数字に戻し、残りの列分だけ1ずつ減少させながら出力します。
実行結果
1 232 34543 4567654 567898765
まとめ
このように、ネストしたforループとシンプルな変数操作を組み合わせることで、規則性のある数字パターンを簡単に出力できます。変数 n の値を変更すれば、任意の行数のパターンにも対応できるので、ぜひいろいろな値で試してみてください。
-
Cプログラムで行列を対角パターンに沿って数値出力する方法
この課題は、n×nの行列を対角パターンで出力することです。 例えば n が 3 の場合、対角パターンに従って行列を出力すると、次のような配置になります。 そして、実際の出力結果は以下の通りです。 実行例 Input: 3 Output: 1 2 4 3 5 7 6 8 9 Input: 4 Output: 1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 16 考え方 一見すると、「数値 n を受け取り n×n の行列を生成し、それを対角方向に走査しながら別の行列へ値を格納する」というアプローチが思い浮かびます
-
C++で中空ピラミッドとダイヤモンドパターンを出力するプログラムの作り方
この記事では、C++を使って中空(ホロー)のピラミッドとダイヤモンドのパターンを生成する方法を解説します。塗りつぶし(ソリッド)のピラミッドパターンは比較的簡単に作成できますが、中空にするにはいくつかの工夫が必要です。ポイントは、ループと条件分岐を組み合わせて「星を出す位置」と「空白を入れる位置」を制御することです。 中空ピラミッドの出力 ピラミッドでは、1行目に星(*)を1つだけ出力し、最終行にはn個の星を連続して出力します。それ以外の行では、行頭と行末にちょうど2つの星を出力し、その間は空白で埋めます。これにより、輪郭だけの中空ピラミッドが完成します。 サンプルコード #include &