プロが教える店舗&オフィスのセキュリティ対策術

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

main()から関数を呼び出し、その数値を返した値にbをかければ答えが出ると思うのですが、
main()から関数を呼び出す、というのはどういう風にかけばいいのでしょうか?

A 回答 (5件)

複利計算ですか・・・



授業の課題か何かですかね?
そうだったら教科書を見れば詳しく書いてあると思います。

数学的にどのように計算をすればよいのかは理解できているのであとは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);
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/18 17:18

因みに、計算結果の確認は


http://www.jabankosaka.or.jp/pb/pb/kinyukeisan/H …
で行えます。

先ほどの回答の実行例

年利(%)=1.21
元本(円)=100000000
期間(年)=20
利子(円)=27194548
元利(円)=127194548

であれば

元金 [10000] 万円を、金利が  年 [1.21] % の
[12] ヵ月複利で複利運用すると、
[20] 年後にはいくらになるか ?

と入力([]で括った部分が入力)して「計算」を押すと

元利合計額 12,719.45万円
年平均利回り 1.360%

と表示され、金額が正しい事が判ります。

※質問文では「年a% の複利」となっていますので、上記ページでは「[12] ヵ月複利」と入力しています。12ヶ月=1年、ですので。
    • good
    • 0

#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>
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/06/18 17:15

わからないのは「関数定義の仕方」と「関数の使用方法」のどちらでしょうか?



>#1
規約は改正されて丸投げ禁止ではなくなりましたよ。
http://faq.okwave.jp/EokpControl?&tid=950130&eve …

まぁそれでも褒められた事でないのは確かですが。
    • good
    • 0

#1 の中にもありますけど, printf っていう関数を呼び出したことはありませんか? それと同じで, (正確ではないけど) 「

関数名のあとにかっこを書き, (必要なら) その中に引数をコンマで区切って並べる」だけで呼び出せますね.
    • good
    • 0

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