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

#define R 3000       // 抵抗 (Ω)
#define L 0.001      // インダクタンス (H)
#define E 5          // 電源電圧 (V)
#define MAX_TIME 0.1   // 最大シミュレーション時間 (秒)
#define NUM_POINTS 10  // 出力するデータ点数

int main() {
    double current = 0.0;    // 電流
    double time = 0.0;       // 時間
    double tau = L / R;      // 時定数 (秒)
    double dt = MAX_TIME / NUM_POINTS;   // 10等分した時間刻み
    double voltage = E;      // 電圧
    int i;                   // ループカウンタを事前に宣言（C89規格に対応）

    // ヘッダを表示
    printf("Time (s), Current (A)\n");

    // 指定した回数だけ電流を計算して表示
    for (i = 0; i <= NUM_POINTS; i++) {
        // 電流の変化（I(t) = V/R * (1 - exp(-t/τ))）
        current = (voltage / R) * (1 - exp(-time / tau));
        
        // 結果を表示
        printf("%lf, %lf\n", time, current);
        
        // 時間を進める
        time += dt;
    }

    printf("計算が終了しました。\n");

    return 0;
}
