- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
#include <stdio.h>
#define M 100 // データセット数の上限
// 単利の計算を行う関数
int sim(int resrc, int years, double rate, int chrg)
{
int i;
int temp = 0;
for(i = 0; i < years; i++){
temp += (resrc * rate);
resrc -= chrg;
}
return (resrc + temp);
}
// 複利の計算を行う関数
int cmp(int resrc, int years, double rate, int chrg)
{
int i;
for(i = 0; i < years; i++){
resrc += resrc * rate - chrg;
}
return (resrc);
}
int main(void)
{
int resrc; // 初期運用資金量
int years; // 運用年数
int intr; // 利子の種類(0:単利/1:複利)
double rate;// 年利率
int chrg; // 毎年の手数料
int m, n; // データセット数、運用方法の種類数
int i, j; // ループ変数
int result; // それぞれの運用方法の最終資金を格納
int max[M] = {0}; // 各データセットの最大最終資金を格納する配列
scanf("%d", &m);
for(i = 0; i < m; i++){
scanf("%d", &resrc);
scanf("%d", &years);
scanf("%d", &n);
for(j = 0; j < n; j++){
scanf("%d %lf %d", &intr, &rate, &chrg);
// 単利か複利かで分岐
switch(intr){
case 0 : result = sim(resrc, years, rate, chrg); break; // 単利
case 1 : result = cmp(resrc, years, rate, chrg); break; // 複利
}
// 最大の最終資金ならば代入
if(result > max[i])
max[i] = result;
}
}
// 出力
for(i = 0; i < m; i++)
printf("%d\n", max[i]);
return (0);
}