【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` から数値データを読み取り、基本統計量を計算し、結果を出力します。