複雑な計算の関数化
Posted: 2010年9月08日(水) 15:39
発展課題 10..1
年r %の複利でy 円を借り,n 年後に一括返済する場合の返 済額を計算するプログラムを作成せよ.ただし,r %の複利でn 年 借りた場合の利率を計算する部分を関数として作成すること.下記ヒント参照.
% ./interest
利率(r): 7.5
金額(y): 1000000
期間(n): 2
返済金額は 1155625 円です
%
ヒント: 返済額は円である.r%の複利でn年 間の利率を計算する関数 float interest(float r, int n) を作る.そしてmain()からinterest()を呼び出し,返された値に yを掛けて返済額を求める.
という問題で、コンパイルして実行してみるとなぜか返済金額がマイナスになり、正しい答えがでません。どう直せばよいでしょうか?
私が書いたソースコード↓
#include<stdio.h>
# define BUFFER_SIZE (256)
int get_int(void)
{
char buf[BUFFER_SIZE];
fgets(buf, BUFFER_SIZE, stdin);
return atoi(buf);
}
double atof(char [/url]);
double
get_float(void)
{
char buf[BUFFER_SIZE];
double number;
fgets(buf, BUFFER_SIZE, stdin);
return number = (double )atof(buf);
}
float interest(float r, int n){
int i;
float risi;
for(i=0 ; i<n ; i++){
risi = risi * (1 + r/100);
}
return risi;
}
int main (void){
int money,period;
float a,result;
printf("利率(r): ");
a = get_int();
printf("金額(y): ");
money = get_int();
printf("期間(n): ");
period = get_int();
x = interest( a , period );
result = money * x;
printf("返済金額は %d 円です。",result);
return 0;
}
年r %の複利でy 円を借り,n 年後に一括返済する場合の返 済額を計算するプログラムを作成せよ.ただし,r %の複利でn 年 借りた場合の利率を計算する部分を関数として作成すること.下記ヒント参照.
% ./interest
利率(r): 7.5
金額(y): 1000000
期間(n): 2
返済金額は 1155625 円です
%
ヒント: 返済額は円である.r%の複利でn年 間の利率を計算する関数 float interest(float r, int n) を作る.そしてmain()からinterest()を呼び出し,返された値に yを掛けて返済額を求める.
という問題で、コンパイルして実行してみるとなぜか返済金額がマイナスになり、正しい答えがでません。どう直せばよいでしょうか?
私が書いたソースコード↓
#include<stdio.h>
# define BUFFER_SIZE (256)
int get_int(void)
{
char buf[BUFFER_SIZE];
fgets(buf, BUFFER_SIZE, stdin);
return atoi(buf);
}
double atof(char [/url]);
double
get_float(void)
{
char buf[BUFFER_SIZE];
double number;
fgets(buf, BUFFER_SIZE, stdin);
return number = (double )atof(buf);
}
float interest(float r, int n){
int i;
float risi;
for(i=0 ; i<n ; i++){
risi = risi * (1 + r/100);
}
return risi;
}
int main (void){
int money,period;
float a,result;
printf("利率(r): ");
a = get_int();
printf("金額(y): ");
money = get_int();
printf("期間(n): ");
period = get_int();
x = interest( a , period );
result = money * x;
printf("返済金額は %d 円です。",result);
return 0;
}