※(2020/5/11)プログラムを作り直してシンプルに。
自分の誕生日と現在の日付を入力すると、生まれてから何日生きているかを計算します。
なお、日数が32767日(約89歳)を越えてマイナスになる場合(符号付き16ビット整数)ですが、+65536した日数を計算して表示しています(210〜340行)。
これで0歳〜179歳までの人に対応できます。
プログラム
10 CLS:?"*** LIFE DAYS ***" 20 CLV 30 ?:?"---Birthday" 40 ?"Year=";:INPUT B 50 ?"Month=";:INPUT C 60 ?"Day=";:INPUT D 70 ?:?"---Now" 80 ?"Year=";:INPUT Y 90 ?"Month=";:INPUT M 100 ?"Day=";:INPUT E 110 IF C<=2 B=B-1:C=C+12 120 IF M<=2 Y=Y-1:M=M+12 130 A=365*(Y-B) 140 A=A+Y/4-B/4 150 A=A-Y/100+B/100 160 A=A+Y/400-B/400 170 A=A+306*(M+1)/10-306*(C+1)/10 180 A=A+E-D 190 ?:?"LIFE DAYS="; 200 IF A>=0 ?A:END 210 FOR I=0 TO 4 220 [I]=A%10:[I]=-[I] 230 A=A/10 240 NEXT 250 LET [10],6,3,5,5,6 260 FOR I=0 TO 4 270 F=[I+10]-[I] 280 IF F<0 F=F+10:[I+21]=-1 290 [I+20]=[I+20]+F 300 NEXT 310 FOR I=4 TO 0 STEP -1 320 ?[I+20]; 330 NEXT 340 ?
誕生日から現在までの日数計算は、西暦1年1月1日からの日数を計算するフェアフィールドの公式
365y+[y/4]-[y/100]+[y/400]+[306(m+1)/10]+d-428※yは年、mは月、dは日。[]は小数点以下切り捨て。ただし1月・2月は前年の13月・14月とする
を差し引きに変形して計算しています。
現在の西暦(グレゴリオ暦)のうるう年(2月29日があって1日増える年)にするルールは、
- 西暦が4で割り切れる年はうるう年とする
- ただし西暦が100で割り切れる年は平年とする
- ただし西暦が400で割り切れる年はうるう年とする
です。例えば2020年はルール1によりうるう年、1900年はルール2により平年、2000年はルール3によりうるう年です。
上の公式はそのルールをそのまま計算しています。
実際は、1900年に生まれた人はもう生きておらず、2000年はそのままうるう年なので、人生日数計算ではルール1「4で割り切れる年」だけ考えればよいです。プログラムでは一応公式どおりに計算しています。
IchigoJam web版
web版での実行はこちら。再計算する時はF5キーを押してください。