【C言語】データの読み込みと基本統計量の計算

【C言語】データの読み込みと基本統計量の計算

データの読み込み

C言語では、データを読み込む方法として、標準入力やファイル入力を利用することが一般的です。

標準入力からのデータ読み込み

標準入力(キーボード入力)から複数の数値を読み取る方法です。

#include <stdio.h>

int main() {
    int n, i;
    double data[100];  // 最大100個のデータ

    printf("データの個数を入力: ");
    scanf("%d", &n);

    printf("データを入力してください: ");
    for (i = 0; i < n; i++) {
        scanf("%lf", &data[i]);
    }

    // 入力データの表示
    printf("入力されたデータ: ");
    for (i = 0; i < n; i++) {
        printf("%.2f ", data[i]);
    }
    printf("\n");

    return 0;
}

ファイルからのデータ読み込み

ファイルからデータを読み込む場合は、`fopen` を使用してファイルを開き、`fscanf` を使ってデータを取得します。

#include <stdio.h>

int main() {
    FILE *file;
    double data[100];
    int n = 0;

    file = fopen("data.txt", "r"); // ファイルを読み取りモードで開く
    if (file == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }

    while (fscanf(file, "%lf", &data[n]) == 1) {
        n++;
    }
    fclose(file);

    printf("読み込んだデータ: ");
    for (int i = 0; i < n; i++) {
        printf("%.2f ", data[i]);
    }
    printf("\n");

    return 0;
}

平均・分散・標準偏差の計算

統計量の基本である平均、分散、標準偏差を求める方法を解説します。

平均の計算

平均(算術平均)は以下の式で求めます:

\[ \mu = \frac{1}{n} \sum_{i=1}^{n} x_i \]

#include <stdio.h>

double calculate_mean(double data[], int n) {
    double sum = 0.0;
    for (int i = 0; i < n; i++) {
        sum += data[i];
    }
    return sum / n;
}

分散の計算

分散は以下の式で求めます:

\[ \sigma^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \mu)^2 \]

#include <stdio.h>

double calculate_variance(double data[], int n, double mean) {
    double sum = 0.0;
    for (int i = 0; i < n; i++) {
        sum += (data[i] - mean) * (data[i] - mean);
    }
    return sum / n;
}

標準偏差の計算

標準偏差は分散の平方根です:

\[ \sigma = \sqrt{\sigma^2} \]

#include <math.h>

double calculate_stddev(double variance) {
    return sqrt(variance);
}

結果の出力

統計量を整った形式で表示する方法を紹介します。

#include <stdio.h>
#include <math.h>

void print_statistics(double mean, double variance) {
    printf("平均: %.2f\n", mean);
    printf("分散: %.2f\n", variance);
    printf("標準偏差: %.2f\n", sqrt(variance));
}

統合例

これまでのコードを統合し、ファイルからデータを読み取り、統計量を計算・表示する完全なプログラムを示します。

#include <stdio.h>
#include <math.h>

double calculate_mean(double data[], int n) {
    double sum = 0.0;
    for (int i = 0; i < n; i++) {
        sum += data[i];
    }
    return sum / n;
}

double calculate_variance(double data[], int n, double mean) {
    double sum = 0.0;
    for (int i = 0; i < n; i++) {
        sum += (data[i] - mean) * (data[i] - mean);
    }
    return sum / n;
}

int main() {
    FILE *file;
    double data[100];
    int n = 0;

    file = fopen("data.txt", "r");
    if (file == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }

    while (fscanf(file, "%lf", &data[n]) == 1) {
        n++;
    }
    fclose(file);

    double mean = calculate_mean(data, n);
    double variance = calculate_variance(data, n, mean);

    printf("平均: %.2f\n", mean);
    printf("分散: %.2f\n", variance);
    printf("標準偏差: %.2f\n", sqrt(variance));

    return 0;
}

このプログラムは、ファイル `data.txt` から数値データを読み取り、基本統計量を計算し、結果を出力します。

コメントは受け付けていません。