トップ 一覧 Farm 検索 ヘルプ RSS ログイン

05da4.cの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
 #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);
 }