- ベストアンサー
預金の福利計算
初めて質問をします。 C++で「x円を年利r%で預金し、そのまま預けておいたとき、何年で2倍になるか」 と言うプログラミングを書きたいのですが、どなたか教えて下さい。 ちなみに預金額と年利はキーボードから読み込みたいです・・・
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
全て wolvさんが答えているところを、まとめてこんな ところです。 ちなみに当方は対数計算等も全くできず、完全に他人の フンドシによる答えです。これでよろしければ 感謝は wolvサンの方にして下さい。では #include<stdio.h> #include<math.h> int year(int en, float r){ int y=0; double bai=1; while(bai<2){ y++; bai *=1+r/100.0; printf("%d年後:%.6f倍 %d円\n", y, bai, (int)(en*bai)); } return y; } int main(void) { int en; float r; double y; while(1){ printf("預金額(円)…"); scanf("%d", &en); printf("利率(%)…"); scanf("%f", &r); year(en, r); y = log(2)/log(1+r/100); printf("year=%f年\n",y); } return 0; }
その他の回答 (2)
- wolv
- ベストアンサー率37% (376/1001)
logを使わずに,プログラミングで年数を求めるなら, (C++ではなく,Cですが……) int year(float r){ int y=0; float bai=1; while(bai<2){ y++; bai*=1+r/100.0; } return y; } のように,まず年数を求める関数をつくり, main(){ 変数の宣言 while(1){ rの入力 y=year(r); printf("year=%d\n",y); } } のようにすればいいと思います. 変数の宣言部分と rの入力の部分は,省略しました.
- wolv
- ベストアンサー率37% (376/1001)
C++ ではないのですが…… 実は,金額xは関係ありません. 年利r(%)が決まれば,何年で2倍になるかがきまります. 1年後は,(1+r/100)倍, 2年後は,{(1+r/100)^2}倍,(^2は2乗を表す.) n年後は,{(1+r/100)^n}倍,(^nはn乗を表す.) ちょうど2倍になるのがn年後だとすると, 2=(1+r/100)^n なので, log(2)=log{(1+r/100)^n} = n*log(1+r/100) よって, n = log(2)/log(1+r/100) となります. 一番簡単なのは,Excelなどで, A1セルに年利r(%)を,B1セルに =log(2)/log(1+A1/100) と入力することでしょう.B1をB2,B3,B4,...にコピーすれば, A2,A3,A4に入力した年利に対する年数が対応するB列のセルに表示されます.
お礼
回答ありがとうございます。 でも、これってMicrosoft Visual C++で、できますかね・・・