// このプログラムを"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
}
}