diff options
Diffstat (limited to '07_retirement/README')
-rw-r--r-- | 07_retirement/README | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/07_retirement/README b/07_retirement/README new file mode 100644 index 0000000..0e9d000 --- /dev/null +++ b/07_retirement/README @@ -0,0 +1,82 @@ + For this problem, you will be writing a "retirement savings" calculator. + We'll remove the effects of inflation by keeping everything in + "today's dollars" and using a "Rate of return" that is in terms of + "more than inflation." + + 1. Create a file called "retirement.c". Include the usual header + files (stdlib.h and stdio.h) at the top. + + 2. We're going to model both savings (while working) and expenditure + (while retired). It turns out that both of these require the + same basic information, so we will make a struct to represent that. + Declare a struct _retire_info which has three fields: + (1) an int called "months" for the number of months it is applicable to, + (2) a double called "contribution" for how many dollars + are contributed (or spent if negative) from the account per month + (3) a double called "rate_of_return" for the rate of returns + (which we will assume to be "after inflation"). + + After you have declared this struct, use typedef to make "retire_info" + another name for this struct. + + 3. Write the function + void retirement (int startAge, //in months + double initial, //initial savings in dollars + retire_info working, //info about working + retire_info retired) //info about being retired + + This function should perform two tasks (which are similar---look + for a chance to abstract something out into a function!). + + First, it should compute your retirement account balance each + month while you are working. To do this, you need to calculate + the account balance increase from returns (balance * rate of return), + and add that to the current balance. You then need to add the + monthly contribution to the balance. + For example, if you have $1,000 in the account, earn a 0.5% rate of + return per month, and contribute $100 per month, you would + cmopute 1000 * 0.005 = $5 in interest earned. You would then + add this plus the monthly contribution to the balance to end up + with $1105 in the account at the end of the month. + + At the start of each month (before the balance changes), you should + print out the current balance with the following format: + "Age %3d month %2d you have $%.2lf\n" + The first two format conversions are the savers age in years and months. + The third format conversion is the account balance + This calculation goes on for the number of months specified + in the "working" retire_info structure. + + + Second, you should perform a very similar calculation for each + month of retirment. The difference here is that you will use the + information in the "retired" retire_info structure instead + of the information in the "working" structure. As with + working, you should print out the same information as before. + + [Hint: since you are performing a very similar computation, + think about how you can abstract that part out into a function, + and re-use it, rather than re-writing it] + + 4. Write a main function which computes the retirement assuming + Working: + -------- + Months: 489 + Per Month Savings: $1000 + Rate of Return: 4.5% per year ( 0.045/12 per month) + [above inflation] + Retired: + -------- + Months: 384 + Per Month Spending: -4000 + Rate of Return: 1% per year ( 0.01/12 per month) + [above inflation] + Starting conditions: + ------------------- + Age: 327 months (27 years, 3 months) + Savings: $21,345 + 5. Compile your code (we provided a Makefile) and test + it (we provided the output: retirement_ans.txt). + + 6. Submit retirement.c + |