C 言語でデータセットの平均値を計算する方法

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

はじめに

この実験では、C プログラミングでデータセットの平均値を計算する方法を学びます。この実験は、以下の手順で構成されています。

  1. ユーザー入力から数値の配列を読み取る。
  2. 数値の合計を計算し、その合計を数値の個数で割ることで平均値を計算する。
  3. 計算された平均値を出力する。

この実験では、C 言語における平均値計算のプロセスを理解するのに役立つ、段階的な手順とサンプルコードを提供しています。この実験の終わりまでに、C プログラミングを使用して数値データを分析し要約するスキルを習得するでしょう。

数値配列の読み込み

このステップでは、C プログラミングで数値の配列を読み込む方法を学びます。ユーザーが数値のセットを入力し、それらを配列に格納するシンプルなプログラムを作成します。

まず、~/project ディレクトリに新しい C ファイルを作成します。

cd ~/project
nano mean_calculation.c

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

#include <stdio.h>

#define MAX_SIZE 100

int main() {
    int numbers[MAX_SIZE];
    int count;

    // 要素数を入力するようにユーザーに促す
    printf("要素数を入力してください (最大 %d): ", MAX_SIZE);
    scanf("%d", &count);

    // 入力値の検証
    if (count <= 0 || count > MAX_SIZE) {
        printf("無効な要素数です!\n");
        return 1;
    }

    // 配列に数値を読み込む
    printf("%d 個の数値を入力してください:\n", count);
    for (int i = 0; i < count; i++) {
        printf("数値 %d を入力してください:", i + 1);
        scanf("%d", &numbers[i]);
    }

    // 入力された数値を出力する
    printf("\n入力された数値は:\n");
    for (int i = 0; i < count; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");

    return 0;
}

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

gcc mean_calculation.c -o mean_calculation

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

./mean_calculation

出力例:

要素数を入力してください (最大 100): 5
5 個の数値を入力してください:
数値 1 を入力してください: 10
数値 2 を入力してください: 20
数値 3 を入力してください: 30
数値 4 を入力してください: 40
数値 5 を入力してください: 50

入力された数値は:
10 20 30 40 50

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

  • #define MAX_SIZE 100 は、配列サイズの最大制限を設定します。
  • scanf() は、要素数と個々の数値を読み取るために使用されます。
  • 入力値は、許可された範囲内であることを確認するために検証されます。
  • for ループを使用して、数値を入力し、その後表示します。

このプログラムは、以下の方法を示しています。

  1. 最大サイズを持つ配列を宣言する
  2. ユーザーから要素数を得る
  3. 配列に数値を入力する
  4. ユーザー入力を検証する
  5. 入力された数値を表示する

合計の計算と平均値 = 合計/個数

このステップでは、ユーザーが入力した数値の合計と平均値を計算するプログラムを拡張します。

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

cd ~/project
nano mean_calculation.c

合計と平均値の計算を含めるようにコードを修正します。

#include <stdio.h>

#define MAX_SIZE 100

int main() {
    int numbers[MAX_SIZE];
    int count;
    int sum = 0;
    float mean;

    // 要素数を入力するようにユーザーに促す
    printf("要素数を入力してください (最大 %d): ", MAX_SIZE);
    scanf("%d", &count);

    // 入力値の検証
    if (count <= 0 || count > MAX_SIZE) {
        printf("無効な要素数です!\n");
        return 1;
    }

    // 配列に数値を読み込み、合計を計算する
    printf("%d 個の数値を入力してください:\n", count);
    for (int i = 0; i < count; i++) {
        printf("数値 %d を入力してください:", i + 1);
        scanf("%d", &numbers[i]);
        sum += numbers[i];
    }

    // 平均値を計算する
    mean = (float)sum / count;

    // 結果を出力する
    printf("\n入力された数値は:\n");
    for (int i = 0; i < count; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");

    printf("数値の合計:%d\n", sum);
    printf("数値の平均値:%.2f\n", mean);

    return 0;
}

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

gcc mean_calculation.c -o mean_calculation

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

./mean_calculation

出力例:

要素数を入力してください (最大 100): 5
5 個の数値を入力してください:
数値 1 を入力してください: 10
数値 2 を入力してください: 20
数値 3 を入力してください: 30
数値 4 を入力してください: 40
数値 5 を入力してください: 50

入力された数値は:
10 20 30 40 50
数値の合計: 150
数値の平均値: 30.00

このバージョンの変更点:

  • 全ての数値の合計を追跡するための sum 変数を追加しました。
  • 入力ループに合計計算を統合しました。
  • 合計を個数で割ることで平均値を計算しました。
  • 浮動小数点除算を保証するために型キャスト (float) を使用しました。
  • 書式付き出力で合計と平均値の出力を追加しました。

このプログラムは、以下のことを示しています。

  1. 配列要素の合計を計算する
  2. 算術平均を計算する
  3. 精度付きの結果を表示する

平均値の出力

この最終ステップでは、平均値を計算および出力する関数を作成することでコードをリファクタリングし、プログラムをよりモジュール化して読みやすくします。

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

cd ~/project
nano mean_calculation.c

平均値計算専用の関数を追加したコードを更新します。

#include <stdio.h>

#define MAX_SIZE 100

// 平均値を計算して出力する関数
void calculateMean(int numbers[], int count) {
    if (count <= 0) {
        printf("エラー: 平均値を計算する数値がありません。\n");
        return;
    }

    int sum = 0;
    float mean;

    // 合計を計算する
    for (int i = 0; i < count; i++) {
        sum += numbers[i];
    }

    // 平均値を計算する
    mean = (float)sum / count;

    // 詳細な統計情報を表示する
    printf("\n統計情報:\n");
    printf("要素数:%d\n", count);
    printf("数値の合計:%d\n", sum);
    printf("数値の平均値:%.2f\n", mean);
}

int main() {
    int numbers[MAX_SIZE];
    int count;

    // 要素数を入力するようにユーザーに促す
    printf("要素数を入力してください (最大 %d): ", MAX_SIZE);
    scanf("%d", &count);

    // 入力値の検証
    if (count <= 0 || count > MAX_SIZE) {
        printf("無効な要素数です!\n");
        return 1;
    }

    // 配列に数値を読み込む
    printf("%d 個の数値を入力してください:\n", count);
    for (int i = 0; i < count; i++) {
        printf("数値 %d を入力してください:", i + 1);
        scanf("%d", &numbers[i]);
    }

    // 入力された数値を出力する
    printf("\n入力された数値は:\n");
    for (int i = 0; i < count; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");

    // 平均値を計算して出力する
    calculateMean(numbers, count);

    return 0;
}

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

gcc mean_calculation.c -o mean_calculation

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

./mean_calculation

出力例:

要素数を入力してください (最大 100): 4
4 個の数値を入力してください:
数値 1 を入力してください: 10
数値 2 を入力してください: 20
数値 3 を入力してください: 30
数値 4 を入力してください: 40

入力された数値は:
10 20 30 40
統計情報:
要素数: 4
数値の合計: 100
数値の平均値: 25.00

このバージョンの主な改善点:

  • 別々の calculateMean() 関数を作成しました。
  • より詳細な統計情報を表示しました。
  • エッジケースのエラー処理を改善しました。
  • 前のステップと同じ基本的な機能を維持しました。
  • コードをよりモジュール化して読みやすくしました。

このプログラムは、以下のことを示しています。

  1. 関数ベースの計算アプローチ
  2. 包括的な統計情報出力
  3. モジュール化されたコード設計

まとめ

この実験では、C プログラミングで数値の配列を読み込み、データセットの合計と平均を計算し、平均値を出力する方法を学びます。最初に、ユーザーに一連の数値を入力するように求め、それらを配列に格納します。次に、数値の合計を計算し、個数で割って平均値を求めます。最後に、計算された平均値を出力します。

この実験でカバーする主な手順には、最大サイズを持つ配列を宣言すること、ユーザーから要素数を得ること、配列に数値を入力すること、ユーザー入力を検証すること、入力された数値を表示することなどが含まれます。実験の終わりまでに、C プログラミングでデータセットの平均値を計算する方法を明確に理解しているはずです。