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

C言語でフロイドの三角形(整数)を出力する方法をわかりやすく解説

フロイドの三角形(Floyd's Triangle)とは、左上隅から1で始まる連続した整数を、直角三角形の形に並べたものです。プログラミング学習における二重ループの練習問題として非常に人気があり、C言語の基礎を固めるのに最適な題材です。

フロイドの三角形とは

フロイドの三角形は、次のように1から順番に数字を並べていきます。

1
2 3
4 5 6
7 8 9 10

第1行目には1個、第2行目には2個というように、行番号と同じ数だけ連続する整数が配置されるのが特徴です。

例1:基本的なフロイドの三角形を出力する

以下のプログラムでは、ユーザーに行数を入力してもらい、外側のループで行を制御し、内側のループで各行に表示する数字の個数を制御しています。変数 start が1から始まり、表示するたびにインクリメントされることで連続した整数を実現しています。

#include <stdio.h>
int main(){
    int rows, i, j, start = 1;
    printf("Enter no of rows of Floyd's triangle :");
    scanf("%d", &rows);
    for (i = 1; i <= rows; i++){
        for (j = 1; j <= i; j++){
            printf("%d ", start);
            start++;
        }
        printf("\n");
    }
    return 0;
}

実行結果

Enter no of rows of Floyd's triangle :6
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

プログラムのポイント

  • 外側の for ループ(変数 i)が行数を管理します。
  • 内側の for ループ(変数 j)は j <= i の条件により、i 行目に i 個の数字を表示します。
  • 変数 start を使うことで、改行しても数値の連続性が保たれます。

例2:逆順のフロイドの三角形を出力する

次に、逆順(降順)のフロイドの三角形を表示するプログラムを紹介します。まず最大行数から全体の要素数を num*(num+1)/2 で計算し、そこから減算しながら出力していきます。ループも下の行から上の行へ向かって逆方向に回します。

#include<stdio.h>
int main() {
    int num, i, j;
    printf("Enter number of rows: ");
    scanf("%d",&num);
    int k = num*(num+1)/2;
    for(i=num; i>=0; i--) {
        for(j=1; j<=i; j++)
        printf("%4d",k--);
        printf("\n");
    }
    return 0;
}

実行結果

Enter number of rows: 7
28 27 26 25 24 23 22
21 20 19 18 17 16
15 14 13 12 11
10 9 8 7
6 5 4
3 2
1

プログラムのポイント

  • k = num*(num+1)/2 は、n 行のフロイドの三角形に含まれる総要素数(等差数列の和)を求める式です。
  • %4d を指定することで、各数字が4桁分の幅で右揃えになり、出力がきれいに整列します。
  • 外側のループを i-- で減らしていくことで、上の行ほど多くの数字が並ぶ逆三角形になります。

まとめ

フロイドの三角形の出力は、二重ループとカウンタ変数の使い方を理解する絶好の練習問題です。基本形をマスターしたら、逆順表示や桁揃えなど、少し工夫を加えたバリエーションにも挑戦してみてください。ループの動きを一つずつ追いかけることで、C言語の制御構造への理解が深まります。

  1. 【C言語】数字パターンを出力するプログラムの作り方

    プログラムの概要 数値パターンとは、「パターンルール」と呼ばれる規則に基づいて生成された数列のことです。パターンルールでは、1つまたは複数の数学的操作を用いて、数列内の連続する数値同士の関係を表現します。 C言語では、for文による繰り返し処理を組み合わせることで、このような規則性のある数字パターンを簡単に出力できます。本記事では、代表的な2種類のパターン(三角形型とひし形型)を出力するプログラムを紹介します。 パターンの例 パターン1(三角形型) 1 2 6 3 7 10 4 8 11 13 5 9 12 14 15 パターン1では、各行の先頭の数字が行番号と一致し、隣の要素は直前の値に「

  2. C言語で鏡像の中空平行四辺形を出力するプログラムの書き方

    本記事では、C言語を使ってコンソールに「鏡像(ミラー型)の中空平行四辺形」を出力する方法を解説します。まず平行四辺形の基本的な性質を確認した上で、具体的なアルゴリズムとサンプルコードを紹介します。 プログラムの説明 平行四辺形とは、向かい合う2組の辺がそれぞれ平行になっている四角形のことです。 平行四辺形には、押さえておくべき重要な性質が6つあります。 対辺は等しい(AB = DC)。 対角は等しい(∠D = ∠B)。 隣り合う角は補角の関係にある(∠A + ∠D = 180°)。 1つの角が直角であれば、すべての角が直角になる。 平行四辺形の対角線は互いに他方を二等分する。 各