summaryrefslogtreecommitdiff
path: root/07_retirement/README
diff options
context:
space:
mode:
authorHaidong Ji2022-04-15 15:51:30 -0500
committerHaidong Ji2022-04-15 15:51:30 -0500
commit442a49ad5a48d417345959b903ae6a6d32d55759 (patch)
treec7127bb497e5e439018b1915e0136eec2c9cb124 /07_retirement/README
Great C programming funHEADmaster
Excellent fundamentals and displine training, many tools and techniques exercises: gdb, emacs, valgrind, git
Diffstat (limited to '07_retirement/README')
-rw-r--r--07_retirement/README82
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
+