C 言語で多角形の周囲長を計算する方法

CBeginner
オンラインで実践に進む

はじめに

この実験では、C 言語で多角形の周囲長を計算する方法を学びます。この実験では、辺の長さを配列に読み込む、すべての辺の長さを合計する、そして周囲長を出力する、という手順を扱います。ユーザーが多角形の辺の長さを入力し、それらを配列に格納し、すべての辺の長さを合計することで周囲長を計算するプログラムを作成します。

この実験は、サンプルコードを含め、C 言語で多角形の周囲長計算を理解し実装するための段階的なガイドを提供します。実験の終わりまでに、最大 10 辺までの多角形の周囲長を計算できる動作するプログラムを完成させます。

辺の長さを配列に読み込む

このステップでは、C 言語で多角形の周囲長を計算するために、辺の長さを配列に読み込む方法を学びます。ユーザーが多角形の辺の長さを入力し、それらを配列に格納するプログラムを作成します。

まず、プロジェクトディレクトリに C ソースファイルを作成しましょう。

cd ~/project
nano polygon_perimeter.c

次に、以下のコードを入力します。

#include <stdio.h>

#define MAX_SIDES 10

int main() {
    float sides[MAX_SIDES];
    int num_sides;

    // 辺の数を入力させる
    printf("多角形の辺の数を入力してください (最大 %d): ", MAX_SIDES);
    scanf("%d", &num_sides);

    // 辺の長さを入力
    printf("辺の長さを入力してください:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("辺 %d の長さ:", i + 1);
        scanf("%f", &sides[i]);
    }

    // 入力された辺の長さを表示
    printf("\n入力された辺の長さ:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("辺 %d: %.2f\n", i + 1, sides[i]);
    }

    return 0;
}

プログラムをコンパイルします。

gcc -o polygon_perimeter polygon_perimeter.c

プログラムを実行します。

./polygon_perimeter

実行例:

多角形の辺の数を入力してください (最大 10): 4
辺の長さを入力してください:
辺 1 の長さ: 5.5
辺 2 の長さ: 6.2
辺 3 の長さ: 4.3
辺 4 の長さ: 7.1

入力された辺の長さ:
辺 1: 5.50
辺 2: 6.20
辺 3: 4.30
辺 4: 7.10

コードの重要な部分を見てみましょう。

  • #define MAX_SIDES 10 は、辺の数の最大値を設定します。
  • float sides[MAX_SIDES] は、辺の長さを格納するための配列を作成します。
  • scanf() は、辺の数と個々の辺の長さを読み取るために使用されます。
  • for ループを使用して、辺の長さを入力し、表示します。

すべての辺の長さを合計する

このステップでは、多角形のすべての辺の長さを合計して周囲長を計算するプログラムを前のプログラムから修正します。

既存のファイルを開きます。

cd ~/project
nano polygon_perimeter.c

周囲長計算を追加したコードを更新します。

#include <stdio.h>

#define MAX_SIDES 10

int main() {
    float sides[MAX_SIDES];
    int num_sides;
    float perimeter = 0.0;

    // ユーザーに辺の数を入力させる
    printf("多角形の辺の数を入力してください (最大 %d): ", MAX_SIDES);
    scanf("%d", &num_sides);

    // 辺の長さを入力
    printf("辺の長さを入力してください:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("辺 %d の長さ:", i + 1);
        scanf("%f", &sides[i]);
    }

    // すべての辺の長さを合計して周囲長を計算
    for (int i = 0; i < num_sides; i++) {
        perimeter += sides[i];
    }

    // 入力された辺の長さと周囲長を表示
    printf("\n入力された辺の長さ:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("辺 %d: %.2f\n", i + 1, sides[i]);
    }

    // 計算された周囲長を表示
    printf("\n多角形の周囲長:%.2f\n", perimeter);

    return 0;
}

更新されたプログラムをコンパイルします。

gcc -o polygon_perimeter polygon_perimeter.c

プログラムを実行します。

./polygon_perimeter

実行例:

多角形の辺の数を入力してください (最大 10): 4
辺の長さを入力してください:
辺 1 の長さ: 5.5
辺 2 の長さ: 6.2
辺 3 の長さ: 4.3
辺 4 の長さ: 7.1

入力された辺の長さ:
辺 1: 5.50
辺 2: 6.20
辺 3: 4.30
辺 4: 7.10

多角形の周囲長: 23.10

このステップで変更された主な点は以下のとおりです。

  • 辺の長さの合計を格納するためのperimeter変数を追加しました。
  • すべての辺の長さを加算して周囲長を計算する新しいforループを追加しました。
  • 計算された周囲長を表示する出力文を追加しました。

周囲長を表示する

この最終ステップでは、入力検証のためのフォーマットされた出力とエラー処理を追加することで、多角形の周囲長計算プログラムを強化します。

既存のファイルを開きます。

cd ~/project
nano polygon_perimeter.c

入力検証とフォーマットされた出力を改善したコードを更新します。

#include <stdio.h>

#define MAX_SIDES 10
#define MIN_SIDES 3

int main() {
    float sides[MAX_SIDES];
    int num_sides;
    float perimeter = 0.0;

    // 入力検証付きで辺の数を入力させる
    do {
        printf("多角形の辺の数を入力してください (3 辺以上、10 辺以下): ",
               MIN_SIDES, MAX_SIDES);
        scanf("%d", &num_sides);

        if (num_sides < MIN_SIDES || num_sides > MAX_SIDES) {
            printf("辺の数が不正です。もう一度入力してください。\n");
        }
    } while (num_sides < MIN_SIDES || num_sides > MAX_SIDES);

    // 検証付きで辺の長さを入力
    printf("辺の長さを入力してください。\n");
    for (int i = 0; i < num_sides; i++) {
        float side_length;
        do {
            printf("辺 %d の長さ (正の数): ", i + 1);
            scanf("%f", &side_length);

            if (side_length <= 0) {
                printf("辺の長さが不正です。正の値を入力してください。\n");
            } else {
                sides[i] = side_length;
                break;
            }
        } while (1);
    }

    // すべての辺の長さを合計して周囲長を計算
    for (int i = 0; i < num_sides; i++) {
        perimeter += sides[i];
    }

    // 結果のフォーマットされた出力
    printf("\n--- 多角形周囲長計算 ---\n");
    printf("辺の数:%d\n", num_sides);

    printf("\n辺の長さ:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("辺 %d: %.2f\n", i + 1, sides[i]);
    }

    printf("\n周囲長計算:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("%s%.2f", (i > 0) ? " + " : "", sides[i]);
    }
    printf(" = %.2f\n", perimeter);

    printf("\n最終的な周囲長:%.2f\n", perimeter);

    return 0;
}

更新されたプログラムをコンパイルします。

gcc -o polygon_perimeter polygon_perimeter.c

プログラムを実行します。

./polygon_perimeter

実行例:

多角形の辺の数を入力してください (3辺以上、10辺以下): 4
辺の長さを入力してください。
辺 1 の長さ (正の数): 5.5
辺 2 の長さ (正の数): 6.2
辺 3 の長さ (正の数): 4.3
辺 4 の長さ (正の数): 7.1

--- 多角形周囲長計算 ---
辺の数: 4

辺の長さ:
辺 1: 5.50
辺 2: 6.20
辺 3: 4.30
辺 4: 7.10

周囲長計算:
5.50 + 6.20 + 4.30 + 7.10 = 23.10

最終的な周囲長: 23.10

このステップで改善された主な点は以下のとおりです。

  • 辺の数と辺の長さに対する入力検証を追加しました。
  • より詳細でフォーマットされた出力を作成しました。
  • 段階的な周囲長計算表示を含めました。
  • 最小辺数と最大辺数の制約を確保しました。

まとめ

この実験では、多角形の辺の長さを配列に読み込み、すべての辺の長さを合計して周囲長を計算し、結果を出力する方法を学びます。最初に、ユーザーに辺の数と各辺の長さを入力させ、辺の長さを配列に格納します。次に、すべての辺の長さを合計して、多角形の周囲長を計算します。最後に、計算された周囲長を出力します。

重要な手順には、scanf() を使用してユーザー入力を読み込み、辺の長さを配列に格納し、配列を反復して辺の長さを合計し、最終結果を出力することなどが含まれます。