• ベストアンサー

C言語での、年複利の計算方法が分かりません。

C言語で以下の問題で困っています。 「年複利の定期預金を始める。満期時の残高を計算せよ。 ・満期時の残高 = 元金×(1+年利率)^年数 ・whileを、使う。」 という問題です。そこで、以下のようにプログラムを書きましたが、うまく動きません。どこが、間違っているのでしょうか?分かる方、お願いします。 #include <stdio.h> main() { /*初期化*/ int a=1, m, t; float b=1, n; /*値の入力*/ printf ("元金を入力してください。\n"); printf ("元金 ="); scanf ("%d", &m); printf ("年利率を入力してください。\n"); printf ("年利率 ="); scanf ("%f", &n); printf ("定期の年数を入力してください。\n"); printf ("定期の年数 ="); scanf ("%d", &t); while (a <= t){ b = b *(1 + n); a = a + 1; } /*出力*/ printf ("満期時の残高は、%fです。", m*b); }

質問者が選んだベストアンサー

  • ベストアンサー
  • ency
  • ベストアンサー率39% (93/238)
回答No.5

No1、No2 の sunasearch さんの回答に補足します。 scanf() の書式指定は float型⇒%f、double型⇒%lf です。 つまり、husigikazetukai さんのサンプルソースであれば、float型を使っているようですので、%f で問題ありません。 ちなみに、printf() の書式指定は float型、double型に関わらず %f のみで、%lf は未定義だったはずです。 # でも、たいていのコンパイラはこのあたりを無難に処理してくれる # ようですけどねぇ。 # scanf() の仕様に引きずられて、printf() の場合も double 型に %lf を # 使ってしまう人が多いせいなんだと思います。 ま、こちらはご参考までに。。。

husigikazetukai
質問者

お礼

補足をありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • rentahero
  • ベストアンサー率53% (182/342)
回答No.4

あ、ちょっと意味不明なので補足 誤: 7.2%の複利10年で約2倍になってるよ? 正: 7.2%の複利10年でちゃんと約2倍になってるよ? 計算自体はあってるね

husigikazetukai
質問者

お礼

補足をありがとうございます。参考になりました。

すると、全ての回答が全文表示されます。
  • rentahero
  • ベストアンサー率53% (182/342)
回答No.3

ちゃんと動いているようだが… 元金を入力してください。 元金 =10000 年利率を入力してください。 年利率 =0.072 定期の年数を入力してください。 定期の年数 =10 満期時の残高は、20042.312145です。 7.2%の複利10年で約2倍になってるよ? …おかしいトコ気づいた?

husigikazetukai
質問者

お礼

複利計算について少しわからない部分がありまして、少し不安でした。やはり、このソースで良かったのですね。 ご回答ありがとうござしました。

すると、全ての回答が全文表示されます。
  • sunasearch
  • ベストアンサー率35% (632/1788)
回答No.2

あと補足ですが、floatは誤差が大きいので、doubleを使ってください。

husigikazetukai
質問者

お礼

ちょっと条件がありまして、double型ではなくfloat型を使わなければいけなかったのでfloat型にしました。 補足をありがとうございました。

すると、全ての回答が全文表示されます。
  • sunasearch
  • ベストアンサー率35% (632/1788)
回答No.1

>scanf ("%f", &n); 実数型では、 %fではなく、%lfを使ってください。

husigikazetukai
質問者

お礼

とても参考になりました。ご回答ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A