dポイントプレゼントキャンペーン実施中!

C言語の課題で毎年10万円ずつ貯金した時、年利が1年複利で1%の場合で
10年たつと貯金残高はいくらになるかという課題です。
ヒント:ループ(for文)、残高変数はdoubleを利用する。
答え:10年後には1056683.466653 となるようです。

というものなのですが、自分なりに試行錯誤してみたのですが答えが合いませんでした。どうか、よろしくお願いします。

A 回答 (6件)

円建て預金は「1年間が365日で計算する」と決まっていますので・・・・


実際の金融と同じように計算するならば、閏年も考えなくてはいけません。
だって・・・
閏年の年利=約定年利*366/365
ですもの。
    • good
    • 0

式の前にフォロー図を作成しましょう




始まり
 ↓
A.10万円足す
 ↓
B.利息を付加する
 ↓
C、10年たったのか  NO→Aへ戻る
 イエス
 ↓
D.残高表示END
 
これをプログラムにすれば良いですね


今回はプログラムの初めであるので次の項目は気にしなくても良いです
が参考にして置くと良いです

実際の金融では
答え:10年後には1056683.466653 
答えこれは間違いです
1円以下は存在しません
現時点日本通貨には1円以下が存在しませんので可笑しいことが判ります

空想の話です
実際の利息の処理は1円以下は切り上げです
切り下げすると利息が減ります
したがって
1056684円
と切り上げ処理するのが正しいです

また
通常は1年ごとに利息を付加する時は1円に切り上げ処理してますので
切り上げするのとしないのでは数円違って来ます
    • good
    • 0

貴方がたてた計算式と答えを質問に含めないと、何が間違っているか指摘できません。

    • good
    • 0

間違えそうなところとしては、


10年後に100,000円足してしまっているか、
毎年の金利計算が (前年の残高+100000)*1.01 とかになっているのでは?
(正しくは 前年の残高*1.01 + 100000 ですよね。)

designmonの出した答えを教えていただければ、
皆さん具体的なアドバイスがしやすいと思いますよ。

この回答への補足

 みなさんのご指摘通りに自分なりに頑張ってみたものをアップします。
一年目だけは計算が合うのですが、2年目からおかしくなってしまいます。考えてみたのですがアルゴリズムが上手く作れません。
どうか、添削お願いいたします。

#include<stdio.h>

int main(void)

{
int year;
double nenri;
double zandaka;
double total;

zandaka=100000;
nenri= 0;
total=0;

for (year=1;year<=10;year++){
nenri = zandaka*0.01;
total +=zandaka + nenri;
}
printf("貯金残高は %f 円です\n",total);
return 0;
}

補足日時:2008/04/28 18:25
    • good
    • 0

答えは1046219(利渡り日前日)/1056681(利渡り日当日)です。


数学的には1056683.466653かも知れませんが、実業務的には利渡り日(利金が計上される日)に利金が元本に組み込まれる歳、利金の端数は切り捨ててから合計します。(上記の答えも切り捨て計算)
金融商品の中には端数を切り上げるものもありますが、いずれにしても利渡り日には端数を整理した金額を元本に組み入れるので、ループ時に端数を整理(切り上げ/切捨て)しない処理は間違っています。
    • good
    • 0

>自分なりに試行錯誤してみたのですが



この部分(どう試行錯誤したのか)を書いてください。それを添削するのでなければ「丸投げ」ということになってしまいますので。

この回答への補足

 みなさんのご指摘通りに自分なりに頑張ってみたものをアップします。
一年目だけは計算が合うのですが、2年目からおかしくなってしまいます。考えてみたのですがアルゴリズムが上手く作れません。
どうか、添削お願いいたします。

#include<stdio.h>

int main(void)

{
int year;
double nenri;
double zandaka;
double total;

zandaka=100000;
nenri= 0;
total=0;

for (year=1;year<=10;year++){
nenri = zandaka*0.01;
total +=zandaka + nenri;
}
printf("貯金残高は %f 円です\n",total);
return 0;
}

補足日時:2008/04/28 18:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!