C++で1からnまでの数字パターンを使ってアルファベット「N」を出力するプログラム
このチュートリアルでは、C++を使って「1からnまでの連続した数字」でアルファベット「N」の形をコンソールに出力するプログラムを解説します。
まず出力する文字「N」のサイズ(行数)を決定し、そのサイズに合わせて左側の縦線・中央の対角線・右側の縦線を、1から順に増えていく数字で描画していくのが今回の課題です。
「N」を描くための考え方
アルファベット「N」は次の3つの要素で構成されています。
- 左の縦線:各行の先頭に表示される数字
- 対角線:行が進むごとに1つずつ右へ移動しながら表示される数字(最初の行と最後の行を除く)
- 右の縦線:各行の末尾に表示される数字
各行の出力処理では、「左の数字 → 対角線までの空白 → 対角線の数字 → 右端までの空白 → 右の数字」の順に文字を並べていきます。空白の幅を行ごとに計算することで、対角線がなだらかに右下へ向かう「N」の形状が自然に浮かび上がります。
サンプルコード
#include <iostream>
using namespace std;
// アルファベット「N」を出力する関数
void print_N(int N){
int index, side_index, size;
int Right = 1, Left = 1, Diagonal = 2;
for (index = 0; index < N; index++) {
cout << Left++;
for (side_index = 0; side_index < 2 * (index); side_index++)
cout << " ";
if (index != 0 && index != N - 1)
cout << Diagonal++;
else
cout << " ";
for (side_index = 0; side_index < 2 * (N - index - 1); side_index++)
cout << " ";
cout << Right++;
cout << endl;
}
}
int main(int argc, char** argv){
int Size = 8;
print_N(Size);
return 0;
}
変数 Left と Right は左右の縦線用、Diagonal は対角線用のカウンターです。main 関数内の Size の値を変更すれば、任意の大きさの「N」を出力できます。
実行結果
1 1 22 2 3 3 3 4 4 4 5 5 5 6 66 7 7 8 8
このように、サイズを8として実行すると、1から8までの数字が左の縦線・対角線・右の縦線に沿って配置され、アルファベット「N」の形が完成します。
-
C++で与えられた点から作成できる四角形の数を求める方法
四角形とは? 四角形(クアドララテラル)とは、ユークリッド平面上で4つの頂点と4つの辺を持つ多角形のことを指します。「4-gon」という呼び方もあり、正方形や長方形なども四角形の一種に含まれます。 本記事では、与えられた点から作成できる四角形の数を求める手法について解説します。この問題では、直交座標系(XY平面)上に与えられた4つの点 (x, y) を用いて、いくつの四角形を構成できるかを求めます。まず、具体的な入力例と出力例を見てみましょう。 入力 : A( -2, 8 ), B( -2, 0 ), C( 6, -1 ), D( 0, 8 ) 出力 : 1 説明 : 作成できる四角形は1つだ
-
C++で二分木の奇数レベルにあるノードを出力するプログラム
このチュートリアルでは、与えられた二分木(バイナリツリー)の中から、奇数レベルに存在するノードを出力するC++プログラムについて解説します。 本プログラムでは、ルートノードのレベルを「1」と定義し、それ以降のレベルは交互にカウントしていきます。つまり、レベル1・3・5…といった奇数番目の階層に属するノードが出力の対象となります。 例として、以下のような二分木が与えられた場合を考えてみましょう。 この二分木の場合、奇数レベルに存在するノードは 1, 4, 5, 6 となります。 アルゴリズムの考え方 実装には再帰呼び出しを利用します。ルートから探索を開始し、現在のレベルが奇数かどうかをブール