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

C言語プログラミングに関して質問です。

元本、年数、単利、複利を順にa,b,c,dと置き、年数経過後の単利、複利の場合のそれぞれの額をe,fとしたとき、
e = a+(a*c)*b
となるのはわかるのですが、複利の場合の金額を求める時の計算式はどう書けばよいのですか。

また、複利が単利より小さい時、何年後に複利のときの金額が単利のときの金額を越すかを表示したいのですが、次の書き方で合ってますか。

if(d < c){
b = 2;
while(1){
if(f > e)
break;
else
b++;

}
printf("%d年後、単利のときの金額を複利のときの金額が追い越します\n",b);
}

A 回答 (7件)

>私の目には while 文で無限ループになるように見えます。




y1=元本*(1+利回り*x)



y2=元本*(1+利回り)^x

の高校の数式の違い(ax と a^x、ただしa>1)がわからない人には、そう見えるかもネ。
    • good
    • 0

高校の数式の違いもなにも


while 文の中では b が増えていってるだけで
e と f の値が変化するする処理が記載されてない以上
一旦ループが始まったら無限ループの気がしますが。

初期化されていないので一発で抜ける事もあるかもしれませんけれど。
    • good
    • 0

私の目には while 文で無限ループになるように見えます。



なので、C言語としての書き方は合っているようですが、
要求仕様に対しての書き方としては誤っているようです。
    • good
    • 0

ああ、あの tennbosu さんですか。


結構みなさん回答して下さっているのに、きちんと返事がないことであなたの質問者としての資質に疑問を持つ方が多いようです。

まず、考え方は↓ですよね。
http://daigakusei.daa.jp/money/tanrifukuri.html

プログラムは、変数を誰が見てもわかるように書く事が基本です。それを心掛けてください。

----- 実行例 -----
ganpon rimawari_tan(%) rimawari_huk(%)? 100 20 15
0 year: tanri= 100.0 yen hukuri= 100.0 yen
1 year: tanri= 120.0 yen hukuri= 115.0 yen
2 year: tanri= 140.0 yen hukuri= 132.2 yen
3 year: tanri= 160.0 yen hukuri= 152.1 yen
4 year: tanri= 180.0 yen hukuri= 174.9 yen
5 year: tanri= 200.0 yen hukuri= 201.1 yen <
6 year: tanri= 220.0 yen hukuri= 231.3 yen <
7 year: tanri= 240.0 yen hukuri= 266.0 yen <
8 year: tanri= 260.0 yen hukuri= 305.9 yen <
9 year: tanri= 280.0 yen hukuri= 351.8 yen <



/* 1回答例 */
#include <stdio.h>
int main(void)
{
float ganpon; /* 元本 */
float rimawari_tan; /* 利回り */
float rimawari_huk; /* 利回り */
float tanri; /* 単利 */
float hukuri; /* 複利 */
int year=0, count=0;

fprintf(stderr, "ganpon rimawari_tan(%%) rimawari_huk(%%)? ");
scanf("%f %f %f", &ganpon, &rimawari_tan, &rimawari_huk);

tanri = hukuri = ganpon;
while(count < 6){
printf("%2d year: \ttanri= %.1f yen \thukuri= %.1f yen %s\n",
year, tanri, hukuri, tanri < hukuri ? "<" : "");
tanri += ganpon * rimawari_tan / 100.0;
hukuri *= 1.0 + rimawari_huk / 100.0;
if(tanri < hukuri) count++;
year++;
}

return 0;
}
    • good
    • 0

「どーでもいいんだけど」



暮れの http://oshiete.goo.ne.jp/qa/6407463.html

#1 では、だめなの?。
(2つの else を取れば判り易いかも・・)

蛇足
 http://okwave.jp/qa/q6309305_2.html#answer

 #1 を、「ベストアンサー」にするかと思った・・・。

 唯一、仕様を満たしている・・。
 「評価」って、ダテじゃないね・・。

この回答への補足

もう終わったんだけど

補足日時:2011/01/15 19:05
    • good
    • 0

「単利を c とおく」とはどういう意味でしょうか?

この回答への補足

こういうことです。

    int a,b;//元本と年数
float c,d;//単利と複利
float e,f;//単利、複利のときのそれぞれの額


printf("元本");
scanf("%d",&a);

printf("年数");
scanf("%d",&b);

printf("単利");
scanf("%f",&c);

printf("複利");
scanf("%f",&d);

補足日時:2011/01/14 23:44
    • good
    • 0

>次の書き方で合ってますか。



それを検証するのが、テストやデバッグという工程です。
ご自分でやらないどうするのでしょうか。
    • good
    • 0

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