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

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;
}

コードの解説

プログラムの処理の流れは以下の通りです。

  1. 変数の初期化: 行数 n を5に設定し、空白の数を表す gap は n - 1 で初期化します。
  2. 外側のループ: 変数 j が1から n まで繰り返され、各行ごとの処理を行います。
  3. 空白の出力: 最初の内側ループで gap の数だけ空白を出力し、その後 gap を1減らします。これにより、下の行ほど左に寄ったピラミッド形状が実現されます。
  4. 増加部分の出力: num を行番号 j で初期化し、j 回だけ数字を出力しながら1ずつ増加させます。
  5. 減少部分の出力: num を2回デクリメントして頂点の次の数字に戻し、残りの列分だけ1ずつ減少させながら出力します。

実行結果

    1
   232
  34543
 4567654
567898765

まとめ

このように、ネストしたforループとシンプルな変数操作を組み合わせることで、規則性のある数字パターンを簡単に出力できます。変数 n の値を変更すれば、任意の行数のパターンにも対応できるので、ぜひいろいろな値で試してみてください。

  1. 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 の行列を生成し、それを対角方向に走査しながら別の行列へ値を格納する」というアプローチが思い浮かびます

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

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