C 言語で分片関数を評価する方法

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

はじめに

この実験では、C プログラミングで分片関数 (piecewise function) を評価する方法を学びます。この実験では、入力値を読み取り、if/else 文を使用して適用する式を決定し、評価結果を出力する手順をカバーします。まず、ユーザーに変数 x の値を入力するように促し、入力値に基づいて異なる式を持つ分片関数を実装します。この実験は、C での代数式と条件論理の処理スキルを向上させるのに役立ちます。

入力値 x の読み込み

このステップでは、C プログラミングで分片関数のための入力値を読み取る方法を学びます。ユーザーが数値を入力して、関数の評価に使用できるようにするシンプルなプログラムを作成します。

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

cd ~/project
nano piecewise_function.c

次に、以下のコードをファイルに追加します。

#include <stdio.h>

int main() {
    double x;

    // ユーザーに x の値を入力するように促す
    printf("Enter a value for x: ");

    // 入力値を読み取る
    scanf("%lf", &x);

    // 入力値を確認するために出力する
    printf("You entered x = %.2f\n", x);

    return 0;
}

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

gcc piecewise_function.c -o piecewise_function

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

./piecewise_function

出力例:

Enter a value for x: 5.5
You entered x = 5.50

コードを詳しく見てみましょう。

  • #include <stdio.h> は標準入出力ライブラリを含みます
  • double x; は入力値を格納するための変数を宣言します
  • printf() はユーザーへのプロンプトを表示します
  • scanf() は入力値を倍精度浮動小数点数として読み取ります
  • %.2f は出力のフォーマットを小数点以下 2 桁で表示するようにします

if/else を使って適用する式を決定する

このステップでは、if/else 文を使用して分片関数を記述するプログラムを前のプログラムから修正します。入力値 x に基づいて異なる式を持つ関数を作成します。

piecewise_function.c ファイルを更新しましょう。

cd ~/project
nano piecewise_function.c

以前の内容を以下のコードに置き換えます。

#include <stdio.h>

// 分片関数を定義する
double piecewise_function(double x) {
    // 条件 1: x が 0 より小さい場合
    if (x < 0) {
        return x * x;  // f(x) = x^2 for x < 0
    }
    // 条件 2: x が 0 以上 5 未満の場合
    else if (x >= 0 && x < 5) {
        return 2 * x + 3;  // f(x) = 2x + 3 for 0 ≤ x < 5
    }
    // 条件 3: x が 5 以上の場合
    else {
        return x - 2;  // f(x) = x - 2 for x ≥ 5
    }
}

int main() {
    double x;

    // ユーザーに x の値を入力するように促す
    printf("Enter a value for x: ");

    // 入力値を読み取る
    scanf("%lf", &x);

    // 分片関数の結果を計算して出力する
    double result = piecewise_function(x);
    printf("f(%.2f) = %.2f\n", x, result);

    return 0;
}

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

gcc piecewise_function.c -o piecewise_function

異なる入力値でプログラムを実行します。

./piecewise_function

出力例 1:

Enter a value for x: -2
f(-2.00) = 4.00

出力例 2:

Enter a value for x: 3
f(3.00) = 9.00

出力例 3:

Enter a value for x: 6
f(6.00) = 4.00

コードを詳しく見てみましょう。

  • piecewise_function() は x の値に基づいて 3 つの異なる式を実装します
  • if/else 文は条件をチェックし、適切な式を適用します
  • 関数は入力 x に基づいて計算された値を返します

計算結果の出力

この最終ステップでは、分片関数プログラムを拡張して、より詳細な出力を行い、異なる入力範囲における関数の動作を示します。

piecewise_function.c ファイルを修正して、より包括的な結果出力を追加しましょう。

cd ~/project
nano piecewise_function.c

以下の実装でコードを更新します。

#include <stdio.h>

// 分片関数を定義する
double piecewise_function(double x) {
    // 条件 1: x が 0 より小さい場合
    if (x < 0) {
        return x * x;  // f(x) = x^2 for x < 0
    }
    // 条件 2: x が 0 以上 5 未満の場合
    else if (x >= 0 && x < 5) {
        return 2 * x + 3;  // f(x) = 2x + 3 for 0 ≤ x < 5
    }
    // 条件 3: x が 5 以上の場合
    else {
        return x - 2;  // f(x) = x - 2 for x ≥ 5
    }
}

int main() {
    double x;

    // ユーザーに x の値を入力するように促す
    printf("分片関数評価器\n");
    printf("関数ルール:\n");
    printf("  f(x) = x^2      for x < 0\n");
    printf("  f(x) = 2x + 3   for 0 ≤ x < 5\n");
    printf("  f(x) = x - 2    for x ≥ 5\n\n");

    printf("Enter a value for x: ");

    // 入力値を読み取る
    scanf("%lf", &x);

    // 分片関数の結果を計算する
    double result = piecewise_function(x);

    // 詳細な出力を提供する
    printf("\n入力分析:\n");
    printf("  入力値 x: %.2f\n", x);

    // 適用された式を判別して出力する
    if (x < 0) {
        printf("  適用された式:f(x) = x^2\n");
    }
    else if (x >= 0 && x < 5) {
        printf("  適用された式:f(x) = 2x + 3\n");
    }
    else {
        printf("  適用された式:f(x) = x - 2\n");
    }

    // 最終結果を出力する
    printf("  結果 f(x): %.2f\n", result);

    return 0;
}

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

gcc piecewise_function.c -o piecewise_function

異なる入力値でプログラムを実行します。

./piecewise_function

例出力 1 (x < 0):

分片関数評価器
関数ルール:
  f(x) = x^2      for x < 0
  f(x) = 2x + 3   for 0 ≤ x < 5
  f(x) = x - 2    for x ≥ 5

Enter a value for x: -3

入力分析:
  入力値 x: -3.00
  適用された式: f(x) = x^2
  結果 f(x): 9.00

(その他例出力は省略)

このステップで改善された点:

  • 詳細な関数ルールの説明を追加
  • 適用された式を含む入力分析を提供
  • 出力の読みやすさを向上
  • 異なる入力範囲における分片関数の動作を示す

まとめ

この実験では、C プログラミングで分片関数の入力値を読み取り、入力値に基づいてどの式を適用するかを if/else 文で決定する方法を学びました。ユーザーが数値を入力できるシンプルなプログラムを作成し、x の値に応じて異なる式を使用して分片関数を評価しました。重要な学習点は、ユーザー入力を読み取る、if/else 文による条件ロジックを実装する、および分片関数内で異なる数学的式を適用することです。