• ベストアンサー

[C言語] 関数を利用する計算

年a% の複利で、b円借りて、c年後にすべて返済した場合の返済額を計算するプログラムを、関数を利用して作りたいのです。 a%でc年借りた場合の利息を計算する部分を関数とすると、 (1+r/100)^c なので、これを関数としてプログラムを組みたいのですが、 関数の使い方がいまいちわからなく、中々組めません。 main()から関数を呼び出し、その数値を返した値にbをかければ答えが出ると思うのですが、 main()から関数を呼び出す、というのはどういう風にかけばいいのでしょうか?

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

  • ベストアンサー
  • aigaion
  • ベストアンサー率47% (287/608)
回答No.1

複利計算ですか・・・ 授業の課題か何かですかね? そうだったら教科書を見れば詳しく書いてあると思います。 数学的にどのように計算をすればよいのかは理解できているのであとはC言語に直すだけですね。 答えを教えるのは簡単ですが、それをやるとあなたの質問がこのWEBサイトの禁止事項である 「課題等の丸投げ」になるのでヒントを書きますね。 まず、教科書をみてわからないなら次のあたりをみて関数を練習してください。 http://www5c.biglobe.ne.jp/~ecb/c/07_01.html そして、次に 足し算を行う簡単な関数の例を示しました。 数学的にいえば複利計算のような難しいものではなく a + b を行う簡単なものです。 これを元に (1+r/100)^c を考えてみては? ちなみに ^c は累乗を表しているかと思いますが累乗の計算には pow 関数という便利な関数があります。 http://www.bohyoh.com/CandCPP/C/Library/pow.html /* プログラムの例 ちなみにコピペしてもコンパイルできませんよ */ #include <stdio.h> #include <math.h> int sum(int a, int b){   int result = 0;   result = a + b;   return result; } int main(void){   int wa ;   wa = sum(1, 2);   printf("1 + 2 = %d\n", wa); }

Flieger
質問者

お礼

int main()は後ろに来るんですね。 わからなかった色々な部分を書いてくれたので大方作ることができました。 ありがとうございました。

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

その他の回答 (4)

回答No.5

因みに、計算結果の確認は http://www.jabankosaka.or.jp/pb/pb/kinyukeisan/HUKU1.asp で行えます。 先ほどの回答の実行例 年利(%)=1.21 元本(円)=100000000 期間(年)=20 利子(円)=27194548 元利(円)=127194548 であれば 元金 [10000] 万円を、金利が  年 [1.21] % の [12] ヵ月複利で複利運用すると、 [20] 年後にはいくらになるか ? と入力([]で括った部分が入力)して「計算」を押すと 元利合計額 12,719.45万円 年平均利回り 1.360% と表示され、金額が正しい事が判ります。 ※質問文では「年a% の複利」となっていますので、上記ページでは「[12] ヵ月複利」と入力しています。12ヶ月=1年、ですので。

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

#include <stdio.h> int kinri(double nenri,int kingaku,int nensu) { int nen,rishi; double riritsu; double kinri; riritsu = (1.0 + nenri / 100.0); /*1年の元利率*/ kinri = 1.0; for (nen = 1;nen <= nensu;nen++) { kinri *= riritsu; /*年数で乗する*/ } kinri *= kingaku; /*元本の額を掛けると元利合計になる*/ kinri += 0.5; /*0.5を足してから*/ rishi = (int)kinri; /*整数に変換すると小数第1位で四捨五入になる*/ rishi -= kingaku; /*元利合計から元本を引くと利子になる*/ return rishi; /*求めた利子を返す*/ } main(void) { double nenri; int kingaku,nensu,rishi,ganri; printf("年利(%)="); scanf("%lf",&nenri); /*年利の入力。実数*/ printf("元本(円)="); scanf("%d",&kingaku); /*元本の入力。整数*/ printf("期間(年)="); scanf("%d",&nensu); /*年数の入力。整数*/ rishi = kinri(nenri,kingaku,nensu); /*利子を求める*/ ganri = kingaku + rishi; /*元利(元本+利子)を求める*/ printf("利子(円)=%d\n",rishi); /*利子の表示*/ printf("元利(円)=%d\n",ganri); /*元利合計の表示*/ return 0; } 実行例 C:\TEMP>kinri 年利(%)=1.21 元本(円)=100000000 期間(年)=20 利子(円)=27194548 元利(円)=127194548 C:\TEMP>

Flieger
質問者

お礼

皆さんのおかげで粗方できていたんですが、計算結果がおかしかった理由がおかげでわかりました。 とても初歩的だったのですが、変換仕様を誤って計算がおかしくなっていたようです。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.3

わからないのは「関数定義の仕方」と「関数の使用方法」のどちらでしょうか? >#1 規約は改正されて丸投げ禁止ではなくなりましたよ。 http://faq.okwave.jp/EokpControl?&tid=950130&event=FE0006 まぁそれでも褒められた事でないのは確かですが。

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

#1 の中にもありますけど, printf っていう関数を呼び出したことはありませんか? それと同じで, (正確ではないけど) 「関数名のあとにかっこを書き, (必要なら) その中に引数をコンマで区切って並べる」だけで呼び出せますね.

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

関連するQ&A