/* 複利計算
* 年率5% 元金1000ドルの口座の毎年の残高を求める。
* ただし、次の式にしがたう。
* a = p(1+r)^n
* p: 元金
* r: 年利率
* n: 年数
* a: n年後の元利合計 */
#include <stdio.h>
#include <math.h>
void fukuri(void);
void d_fukuri(void);
void i_fukuri(void);
int main(void)
{
printf("%4s\t%21s\n","年数","預金残高"); fukuri();
d_fukuri();
i_fukuri();
return 0;
}
void fukuri(void)
{
int year;
double principal = 1000.0; /* 単位ドル */
double rate = .05;
double amount;
for(year=1; year<=10; ++year) {
amount
= principal
* pow(1.0+rate
, year
); printf("%4d\t%21.2f\n", year
,amount
); }
}
void d_fukuri(void)
{
int year;
double principal = 1000.0; /* 単位ドル */
double rate = .05;
double amount; /* not used */
for(year=1; year<=10; ++year) {
principal = principal * (1+rate);
printf("%4d\t%21.2f\n", year
, principal
); }
}
void i_fukuri(void)
{
int year;
int principal = 1000;
int rate = 5; /* 5% */
int amount; /* not used */
principal *= 100; /* 1,000ドル=100,000セント */
for(year=1; year<=10; ++year) {
principal = principal + principal*rate/100;
printf("%4d\t%21d.%02d\n", year
,principal
/100,principal
%100); }
}
LyogIOikh+WIqeioiOeulwoqICAg5bm0546HNe+8hSDlhYPph5ExMDAw44OJ44Or44Gu5Y+j5bqn44Gu5q+O5bm044Gu5q6L6auY44KS5rGC44KB44KL44CCCiogICDjgZ/jgaDjgZfjgIHmrKHjga7lvI/jgavjgZfjgYzjgZ/jgYbjgIIKKiAgICBhID0gcCgxK3IpXm4KKiAgICBwOiDlhYPph5EKKiAgICByOiDlubTliKnnjocKKiAgICBuOiDlubTmlbAKKiAgICBhOiBu5bm05b6M44Gu5YWD5Yip5ZCI6KiIICAgICovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPG1hdGguaD4KCnZvaWQgZnVrdXJpKHZvaWQpOwp2b2lkIGRfZnVrdXJpKHZvaWQpOwp2b2lkIGlfZnVrdXJpKHZvaWQpOwoKaW50IG1haW4odm9pZCkKewogIHByaW50ZigiJTRzXHQlMjFzXG4iLCLlubTmlbAiLCLpoJDph5Hmrovpq5giKTsKCWZ1a3VyaSgpOwoJcHV0cygiLS0tLS0tLS0tLS0tLS0iKTsKCWRfZnVrdXJpKCk7CglwdXRzKCItLS0tLS0tLS0tLS0tLSIpOwoJaV9mdWt1cmkoKTsKCglyZXR1cm4gMDsKfQp2b2lkIGZ1a3VyaSh2b2lkKQp7CglpbnQgeWVhcjsKCWRvdWJsZSBwcmluY2lwYWwgPSAxMDAwLjA7IC8qIOWNmOS9jeODieODqyAqLwoJZG91YmxlIHJhdGUgPSAuMDU7Cglkb3VibGUgYW1vdW50OyAKCglmb3IoeWVhcj0xOyB5ZWFyPD0xMDsgKyt5ZWFyKSB7CgkJYW1vdW50ID0gcHJpbmNpcGFsICogcG93KDEuMCtyYXRlLCB5ZWFyKTsKCQlwcmludGYoIiU0ZFx0JTIxLjJmXG4iLCB5ZWFyLGFtb3VudCk7Cgl9Cn0KCnZvaWQgZF9mdWt1cmkodm9pZCkKewoJaW50IHllYXI7Cglkb3VibGUgcHJpbmNpcGFsID0gMTAwMC4wOyAvKiDljZjkvY3jg4njg6sgKi8KCWRvdWJsZSByYXRlID0gLjA1OwoJZG91YmxlIGFtb3VudDsgLyogbm90IHVzZWQgKi8KCglmb3IoeWVhcj0xOyB5ZWFyPD0xMDsgKyt5ZWFyKSB7CgkJcHJpbmNpcGFsID0gcHJpbmNpcGFsICogKDErcmF0ZSk7CgkJcHJpbnRmKCIlNGRcdCUyMS4yZlxuIiwgeWVhciwgcHJpbmNpcGFsKTsKCX0KfQoKdm9pZCBpX2Z1a3VyaSh2b2lkKQp7CglpbnQgeWVhcjsKCWludCBwcmluY2lwYWwgPSAxMDAwOwoJaW50IHJhdGUgPSA1OyAvKiA1JSAqLwoJaW50IGFtb3VudDsgLyogbm90IHVzZWQgKi8KCglwcmluY2lwYWwgKj0gMTAwOyAvKiAxLDAwMOODieODqz0xMDAsMDAw44K744Oz44OIICovCgoJZm9yKHllYXI9MTsgeWVhcjw9MTA7ICsreWVhcikgewoJCXByaW5jaXBhbCA9IHByaW5jaXBhbCArIHByaW5jaXBhbCpyYXRlLzEwMDsKCQlwcmludGYoIiU0ZFx0JTIxZC4lMDJkXG4iLCB5ZWFyLHByaW5jaXBhbC8xMDAscHJpbmNpcGFsJTEwMCk7Cgl9Cn0K