• 締切済み

C言語プログラミングに関して

非常に困っています。助けて下さい。 元本と単利、複利、年数をそれぞれ入力でき、入力した年数が経過すると単利、複利がそれぞれいくらになるかが表示され、もし複利の方が単利より低い場合、何年後に単利を追い越すかを表示するソースプログラムを作ってください。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

何をしたいのかわかりません. 「単利」や「複利」は「入力する」ものじゃないよ.

  • rinkle
  • ベストアンサー率0% (0/0)
回答No.1

やぁ。 とりあえずこんな感じで目的の動作はするみたいです。 参考にどうぞ (タブが反映されないのでちょっと見づらいかも) #include<stdio.h> //単利の場合の返済額を返す float rTanri(int ganpon,float riritsu,int nensu); //複利の場合の返済額を返す float rFukuri(float ganpon,float riritsu,int nensu); int main(void){ int ganpon,nensu; //元本と年数 float tanri,fukuri; //単利と複利それぞれの利回り float result_tanri,result_fukuri; //単利複利それぞれの場合の返済額 /*入力*/ printf("元本(整数):"); scanf("%d",&ganpon); printf("単利(小数):"); scanf("%f",&tanri); printf("複利(小数):"); scanf("%f",&fukuri); printf("年数(整数):"); scanf("%d",&nensu); /*入力年度の返済額計算および出力*/ result_tanri = rTanri(ganpon,tanri,nensu); result_fukuri = rFukuri(ganpon,fukuri,nensu); printf("単利の場合の返済額:%d円\n",(int)result_tanri); printf("複利の場合の返済額:%d円\n",(int)result_fukuri); /*複利の方が低い場合*/ if(fukuri < tanri){ nensu=2; //1ねんめは明らかに単利の返済額>複利の返済額なので2年目から while(1){ if( rFukuri(ganpon,fukuri,nensu) > rTanri(ganpon,tanri,nensu) ) break; else nensu++; } printf("%d年以降、単利の場合の返済額より複利の場合の返済額が多くなります。\n",nensu); } return 0; } float rTanri(int ganpon,float riritsu,int nensu){ return ganpon+(ganpon*riritsu)*nensu; } float rFukuri(float ganpon,float riritsu,int nensu){ if(nensu <= 0) return ganpon; else return rFukuri(ganpon+(ganpon*riritsu),riritsu,--nensu); }

関連するQ&A