// このプログラムを"weight.c"という名前で保存して、
// gcc -g weight.c -o weight -std=c99
// でコンパイルして下さい。

// 自分の体重をシミュレーションしたい場合は、自分の値に書きかえて
// コンパイル→実行して下さい。

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

int main ()
{
  // 体重変動シミュレーションプログラム

  //基礎代謝量と求め方 ハリス・ベネディクト方程式(日本人版) 計算式
  //http://www.kintore.info/kisotaisya_mass/index.cgi                           
  //【計算式】
  // 男性 66.5+(体重kg×13.8)+(身長cm×5.0)-(年齢×6.8)
  // 女性 665.1+(体重kg×9.6)+(身長cm×1.9)-(年齢×7.0)


#if 0   // 増量シミュレーション
  // 江端智一の2015年11月8日現在の
  // 体重 66.5kg
  double weight = 66.5;
  // 身長 172cm
  double lengthw = 172.0;
  // 年齢 50歳と7日目 
  double age = 50.0 + 7.0/365;
#endif

#if 1   // 100日ダイエットシミュレーション
  // 江端智一の(ダイエット開始前の)2014年2月4日の
  // 体重 78.0kg
  double weight = 78.0;
  // 身長 172cm
  double lengthw = 172.0;
  // 年齢 49歳と94日
  double age = 49.0 + 94/365;
#endif


  // 最初の基礎代謝カロリー
  // 男性のハリス・ベネディクト方程式(日本人版)
  //  66.5+(体重kg×13.8)+(身長cm×5.0)-(年齢×6.8)
  // を、江端の2015年11月8日のデータに当てはめる
   double consumption_calorie =  66.5 + weight * 13.8 + 172.0 * 5.0 - age * 6.8;

  // このカロリーに運動消費カロリーを加えて、トータルの一日の
  // 消費カロリーを算出する
  // (その日の体重66.5kgにおいて)一日運動消費カロリー 708kcalと推定し、
  // このカロリーは、体重に比例するものと仮定する。
  // (運動消費カロリーを計算してくれるサイトは、ネットにたくさんある)
  consumption_calorie += weight/66.5 * 708.0;

  printf("consumption_calorie = %f\n",  consumption_calorie);

  // ----------------------------

#if 0 // 増量シミュレーション

  // 毎日、以下の量を食べると仮定する。

  // 私がマクドナルドで、ビッグマック、マックフライポテト(M)、
  // チキンマックナゲット(5個)、コカ・コーラ(M)を頼むとすると、
  // 合計1,382kcalですので、これを朝夕2食食べるだけでも、540Kcal超過します。
  // ここに昼飯に、吉野家の牛丼(並盛)660Kcalを追加する。
  double source_calorie = 1382.0 * 2 + 660.0; 

#endif

#if 1 // 100日ダイエットシミュレーション

  // 江端のデータと一致する摂取カロリー
  double source_calorie = 1720;

  // 上記の数値(1720)は、江端の体重データとマッチングするまで、
  // 江端が手動で書き直して(ハードコーディングして)、その度に、
  // gcc -g weight.c -o weight -std=c99 
  // weight.exe
  // を繰り返してチューニングして出した値
  // (だから、江端智一本人以外には意味のない値)
  // 適当に改造して下さい。

#endif
  printf("source_calorie = %f\n",  source_calorie);

  for (int day=0; day < 1460; day++){ // 1460日というのは、4年分の日数

    // 7kcal = 1g = 0.001kg となる
    double diff_weight = (source_calorie - consumption_calorie)/7.0 / 1000.0;
    
    weight += diff_weight; // ここで体重が増えたり減ったりする

    age += 1.0/365.0; // 一日 1/365歳、歳を取ると考える

  // 男性のハリス・ベネディクト方程式(日本人版)
    // 66.5+(体重kg×13.8)+(身長cm×5.0)-(年齢×6.8)
    consumption_calorie =  66.5 + weight * 13.8 + 172.0 * 5.0 - age * 6.8;

  // (その日の体重66.5kgにおいて)一日運動消費カロリー 708kcalと推定し、
  // このカロリーは、体重に比例するものと仮定する。
    consumption_calorie += weight/66.5 * 708.0;

#if 0   
    printf("day:%d\tweight = %f\tconsumption_calorie =%f\n", day,weight, consumption_calorie);
#else  
    printf("%d,%f,%f\n", day,weight, consumption_calorie);
#endif

  }
}