C 言語で有理式を評価する方法

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

はじめに

この実験では、C プログラミングで有理式を評価する方法を学びます。この実験では、分子と分母の式を読み込む基本的な手順、ゼロ除算を処理して安全に分数値を計算する手順、そして最終結果を出力する手順を網羅しています。この実践的な演習を通して、C を用いて代数式を扱うための必要なスキルを習得できます。

この実験は、ユーザーから分子と分母の入力を取得するプロセスから始まります。入力値がプログラム内で適切に格納されるようにします。次に、分数を取り扱う際に発生する一般的な問題であるゼロ除算の処理について説明し、この状況に対処する方法を示します。最後に、分数値の計算と最終結果の出力について説明します。

分子と分母式の読み込み

このステップでは、有理式を評価するための基本的なスキルである、C 言語で分子と分母式を読み込む方法を学びます。

まず、有理式入力を実装するための新しい C ファイルを作成します。

cd ~/project
nano rational_expressions.c

次に、分子と分母を読み込むための以下のコードを追加します。

#include <stdio.h>

int main() {
    int numerator, denominator;

    printf("Enter the numerator: ");
    scanf("%d", &numerator);

    printf("Enter the denominator: ");
    scanf("%d", &denominator);

    printf("分子:%d\n", numerator);
    printf("分母:%d\n", denominator);

    return 0;
}

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

gcc rational_expressions.c -o rational_expressions
./rational_expressions

出力例:

分子を入力してください: 10
分母を入力してください: 5
分子: 10
分母: 5

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

  • scanf() は、ユーザーからの整数入力を読み取るために使用されます。
  • 整数入力のために %d フォーマット指定子が使用されます。
  • 分子と分母は、個別の整数変数に格納されます。
  • printf() は、入力値を表示するために使用されます。

分数値の計算

このステップでは、ゼロ除算の可能性を処理し、計算を実行することで、安全に分数値を計算する方法を学びます。

以前のrational_expressions.cファイルに分数計算を含めるように更新します。

cd ~/project
nano rational_expressions.c

分数計算を行うようにコードを修正します。

#include <stdio.h>

int main() {
    int numerator, denominator;
    float fraction_value;

    printf("分子を入力してください:");
    scanf("%d", &numerator);

    printf("分母を入力してください:");
    scanf("%d", &denominator);

    // ゼロ除算をチェック
    if (denominator == 0) {
        printf("エラー: ゼロ除算は許可されていません。\n");
        return 1;
    }

    // 分数値を計算
    fraction_value = (float)numerator / denominator;

    printf("分子:%d\n", numerator);
    printf("分母:%d\n", denominator);
    printf("分数値:%.2f\n", fraction_value);

    return 0;
}

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

gcc rational_expressions.c -o rational_expressions
./rational_expressions

出力例:

分子を入力してください: 10
分母を入力してください: 4
分子: 10
分母: 4
分数値: 2.50

コードの重要なポイント:

  • 実行時エラーを防ぐために、ゼロ除算をチェックしました。
  • 浮動小数点除算を保証するために、(float) 型キャストを使用しました。
  • %.2f を使用して、分数値を小数点以下 2 桁で表示しました。

結果の出力またはゼロ除算の処理

このステップでは、有理式プログラムを強化して、より堅牢なエラー処理と結果の表示を行う方法を学びます。

出力とエラー処理を改善するためにrational_expressions.cファイルを更新します。

cd ~/project
nano rational_expressions.c

高度なエラー処理と結果のフォーマットを含めるようにコードを修正します。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int numerator, denominator;

    // 入力検証とエラー処理
    printf("分子を入力してください:");
    if (scanf("%d", &numerator) != 1) {
        printf("エラー: 無効な分子入力です。\n");
        return 1;
    }

    printf("分母を入力してください:");
    if (scanf("%d", &denominator) != 1) {
        printf("エラー: 無効な分母入力です。\n");
        return 1;
    }

    // 包括的なゼロ除算処理
    if (denominator == 0) {
        printf("エラー: ゼロ除算はできません。分母はゼロ以外の値でなければなりません。\n");
        return 1;
    }

    // 計算結果を異なるフォーマットで出力
    double fraction_value = (double)numerator / denominator;

    printf("\n--- 有理式計算結果 ---\n");
    printf("分子:     %d\n", numerator);
    printf("分母:     %d\n", denominator);
    printf("分数値:%.2f\n", fraction_value);
    printf("整数結果:%d\n", numerator / denominator);
    printf("剰余:     %d\n", numerator % denominator);

    return 0;
}

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

gcc rational_expressions.c -o rational_expressions
./rational_expressions

出力例:

正常な計算:

分子を入力してください: 10
分母を入力してください: 4

--- 有理式計算結果 ---
分子:      10
分母:      4
分数値: 2.50
整数結果: 2
剰余:      2

ゼロ除算:

分子を入力してください: 10
分母を入力してください: 0
エラー: ゼロ除算はできません。分母はゼロ以外の値でなければなりません。

無効な入力:

分子を入力してください: abc
エラー: 無効な分子入力です。

主な改善点:

  • scanf() の戻り値を使用して入力検証を追加しました。
  • さまざまな状況に対応したエラーメッセージを強化しました。
  • 複数の結果表現を提供しました。
  • より正確な浮動小数点計算のために double を使用しました。

まとめ

この実験では、C 言語で分子と分母式を読み取る方法を学びました。これは、有理式を評価するための基本的なスキルです。また、ゼロ除算の可能性を処理し、計算を実行することで、安全に分数値を計算する方法も学びました。最後に、結果を出力するか、ゼロ除算を処理する機能を実装しました。これらのステップは、C プログラミングで有理式を扱うための堅実な基盤を提供します。