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 +  | 
