01: #include <iostream>
02: #include <iomanip>
03: #include <cmath> 
04: using namespace std;
05: 
06: const int BALANCES_ROWS = 11;
07: const int BALANCES_COLS = 6;
08: 
09: const double RATE_MIN = 5;
10: const double RATE_MAX = 10;
11: const double RATE_INCR = 
12:    (RATE_MAX - RATE_MIN) / (BALANCES_ROWS - 1);
13: const int YEAR_MIN = 5;
14: const int YEAR_MAX = 30;
15: const int YEAR_INCR = 
16:    (YEAR_MAX - YEAR_MIN) / (BALANCES_COLS - 1);
17:  
18: /**
19:    Prints a table of account balances.
20:    @param the table to print
21:    @param table_rows the number of rows in the table.
22: */
23: void print_table(const double table[][BALANCES_COLS], 
24:                                        int table_rows)
25: {  const int WIDTH = 10;
26:    cout << setiosflags(ios::fixed) << setprecision(2);
27:    for (int i = 0; i < table_rows; i++)
28:    {  for (int j = 0; j < BALANCES_COLS; j++)
29:          cout << setw(WIDTH) << table[i][j];
30:       cout << "\n";
31:    }
32: } 
33: /**
34:    Computes the value of an investment with compound interest
35:    @param initial_balance the initial value of the investment
36:    @param p the interest rate per period in percent
37:    @param n the number of periods the investment is held
38:    @return the balance after n periods
39: */
40: double future_value(double initial_balance, double p, int n)
41: {  double b = initial_balance * pow(1 + p / 100, n);
42:    return b;
43: }
44: 
45: int main()
46: {  double balances[BALANCES_ROWS][BALANCES_COLS];
47:    for (int i = 0; i < BALANCES_ROWS; i++)
48:       for (int j = 0; j < BALANCES_COLS; j++)
49:          balances[i][j] = future_value(10000, 
50:             RATE_MIN + i * RATE_INCR,
51:             YEAR_MIN + j * YEAR_INCR);
52: 
53:    print_table(balances, BALANCES_ROWS);
54: 
55:    return 0;
56: }