Javaでピラミッド状の数字パターンを作成するプログラムの書き方
この記事では、Javaを使ってピラミッド状の数字パターンを作成する方法を解説します。パターンの出力には、複数のforループとprint文を組み合わせます。
入力と出力の例
まず、具体的な入力と出力のイメージを見てみましょう。
入力
行数として 8 を指定した場合
出力
ピラミッドパターン :
1
2 3 2
3 4 5 4 3
4 5 6 7 6 5 4
5 6 7 8 9 8 7 6 5
6 7 8 9 10 11 10 9 8 7 6
7 8 9 10 11 12 13 12 11 10 9 8 7
8 9 10 11 12 13 14 15 14 13 12 11 10 9 8
このように、各行の中央で数字がピークに達し、左右対称に減少していく形が特徴です。
アルゴリズム
実装の流れは以下の通りです。
ステップ1 - 処理を開始する ステップ2 - my_input、k、i、my_count、my_temp、my_spaces の6つの整数変数を宣言する ステップ3 - ユーザーから必要な値を読み込む(または値を定義する) ステップ4 - k、my_count、my_temp に 0 を代入する ステップ5 - 文字間の空白を作るために、二重の for ループで反復処理を行う ステップ6 - 最内側のループの後に、もう一つの for ループで反復処理を行い、(i + k - 2 * my_temp) の値を出力する ステップ7 - 改行を出力し、次の行へ移る ステップ8 - 結果を表示する ステップ9 - 処理を終了する
サンプルコード1:ユーザーからの入力を受け取る場合
この例では、Scannerを使ってユーザーから行数を入力してもらい、その値をもとにピラミッドパターンを生成します。オンラインの実行環境でも手軽に試すことができます。
import java.util.Scanner;
public class Pyramid {
public static void main(String[] args) {
int my_input, k, i, my_count, my_temp, my_spaces;
my_input = 8;
k = 0;
my_count = 0;
my_temp = 0;
System.out.println("Required packages have been imported");
Scanner my_scanner = new Scanner(System.in);
System.out.println("A reader object has been defined ");
System.out.print("Enter the number of rows: ");
my_input = my_scanner.nextInt();
System.out.println("The pyramid pattern : ");
for ( i = 1; i <= my_input; ++i) {
for (my_spaces = 1; my_spaces <= my_input - i; ++my_spaces) {
System.out.print(" ");
++my_count;
}
while (k != 2 * i - 1) {
if (my_count <= my_input - 1) {
System.out.print((i + k) + " ");
++my_count;
} else {
++my_temp;
System.out.print((i + k - 2 * my_temp) + " ");
}
++k;
}
my_temp = my_count = k = 0;
System.out.println();
}
}
}
実行結果
Required packages have been imported A reader object has been defined Enter the number of rows: 8 The pyramid pattern : 1 2 3 2 3 4 5 4 3 4 5 6 7 6 5 4 5 6 7 8 9 8 7 6 5 6 7 8 9 10 11 10 9 8 7 6 7 8 9 10 11 12 13 12 11 10 9 8 7 8 9 10 11 12 13 14 15 14 13 12 11 10 9 8
サンプルコード2:行数をあらかじめ定義しておく場合
この例では、行数となる整数値を事前にコード内で定義し、その値を使ってパターンをコンソールに出力します。入力処理が不要なため、ロジックの確認に便利です。
public class Pyramid {
public static void main(String[] args) {
int my_input, k, i, my_count, my_temp, my_spaces;
my_input = 8;
k = 0;
my_count = 0;
my_temp = 0;
System.out.println("The number of rows is defined as " +my_input);
System.out.println("The pyramid pattern : ");
for ( i = 1; i <= my_input; ++i) {
for (my_spaces = 1; my_spaces <= my_input - i; ++my_spaces) {
System.out.print(" ");
++my_count;
}
while (k != 2 * i - 1) {
if (my_count <= my_input - 1) {
System.out.print((i + k) + " ");
++my_count;
} else {
++my_temp;
System.out.print((i + k - 2 * my_temp) + " ");
}
++k;
}
my_temp = my_count = k = 0;
System.out.println();
}
}
}
実行結果
The number of rows is defined as 8
The pyramid pattern :
1
2 3 2
3 4 5 4 3
4 5 6 7 6 5 4
5 6 7 8 9 8 7 6 5
6 7 8 9 10 11 10 9 8 7 6
7 8 9 10 11 12 13 12 11 10 9 8 7
8 9 10 11 12 13 14 15 14 13 12 11 10 9 8
まとめ
ピラミッドパターンの生成では、「左側の空白の制御」「増加する数字の出力」「減少する数字の出力」の3つの要素を組み合わせることがポイントです。ネストしたループとカウンター変数を活用することで、任意の行数に対応した対称的なパターンを簡単に出力できます。ぜひ行数を変更しながら、動作を確認してみてください。
-
C++で中空ピラミッドとダイヤモンドパターンを出力するプログラムの作り方
この記事では、C++を使って中空(ホロー)のピラミッドとダイヤモンドのパターンを生成する方法を解説します。塗りつぶし(ソリッド)のピラミッドパターンは比較的簡単に作成できますが、中空にするにはいくつかの工夫が必要です。ポイントは、ループと条件分岐を組み合わせて「星を出す位置」と「空白を入れる位置」を制御することです。 中空ピラミッドの出力 ピラミッドでは、1行目に星(*)を1つだけ出力し、最終行にはn個の星を連続して出力します。それ以外の行では、行頭と行末にちょうど2つの星を出力し、その間は空白で埋めます。これにより、輪郭だけの中空ピラミッドが完成します。 サンプルコード #include &
-
Javaで商と剰余(余り)を計算するプログラムの書き方
この記事では、Javaで商(クォーシェント)と剰余(リメインダー)を計算する方法をわかりやすく解説します。商と剰余は、次の2つのシンプルな式で求めることができます。商 = 被除数 ÷ 除数剰余 = 被除数 % 除数(%は剰余演算子)商と剰余の数学的な定義整数 a と 0 以外の整数 d が与えられたとき、a = qd + r かつ 0 ≤ r < |d| を満たす整数 q と r の組み合わせは必ず一意に存在することが証明されています。このとき、q を商、r を剰余(余り)と呼びます。以下に具体的なイメージを示します。入力例今回の入力は次のとおりです。被除数の値: 50 除数: 3出力例期待さ