Calculating Credit Card Interest
- Summary
- You will write a program to simulate calculating credit card interest whilst making only the minimum payment each month.
- Objectives
- Reinforce the basic types, operations, and control structures of the C programming language.
Background
An individual's credit card comes with an annual percentage rate (APR), which dictates how much interest you'd pay on a balance over a year. However, because users typically accrue charges over the course a billing cycle, most credit card issuers calculate a so-called daily periodic rate (or DPR) and charge you interest based on the average daily balance during your billing cycle.
Details differ by card issuer, but we will calculate the daily periodic rate as the annual percentage rate over 365.
The total interest charges accrued in your billing cycle is then your average daily balance multiplied by the DPR and the number of days in the billing cycle.
Example
Suppose your APR is 18%, then the DPR is calculated as
0.18 / 365 = 0.0004931506849
Now suppose you're not adding any new charges and your forward balance is $42. If the month corresponding to your billing cycle has 31 days, the total interest you owe is
$42 * 0.004931 * 31 = $0.64
This is a pretty underwhelming amount, but as we'll see, the compounding interest can be significant when you only pay the minimum amount each month.
The Task
Write a program called creditcard.c that establishes an
annual percentage rate and an initial balance as well as a monthly
minimum payment. The program should then display the amount paid each
month, along with the interest accrued and the remaining
balance. Once the balance is paid off, it should report how many
months it took to pay off the balance and the total amount paid.
For example, if we have a common APR of 18% and monthly minimum of $35, we might see the following for a forward balance of $500.
Cycle Month Intrst Payment Balance 0 9 $ 7.40 $35.00 $ 472.40 1 10 $ 7.22 $35.00 $ 444.62 2 11 $ 6.58 $35.00 $ 416.20 3 12 $ 6.36 $35.00 $ 387.56 4 1 $ 5.92 $35.00 $ 358.48 5 2 $ 4.95 $35.00 $ 328.43 6 3 $ 5.02 $35.00 $ 298.46 7 4 $ 4.42 $35.00 $ 267.87 8 5 $ 4.10 $35.00 $ 236.97 9 6 $ 3.51 $35.00 $ 205.47 10 7 $ 3.14 $35.00 $ 173.61 11 8 $ 2.65 $35.00 $ 141.27 12 9 $ 2.09 $35.00 $ 108.36 13 10 $ 1.66 $35.00 $ 75.01 14 11 $ 1.11 $35.00 $ 41.12 15 12 $ 0.63 $35.00 $ 6.75 16 1 $ 0.10 $ 6.86 $ 0.00 After 17 months, you paid $566.86 on an initial balance of $500.00.
Your program should also follow these requirements:
- Calculate the interest based on the number of days in the month. (Ignore leap years and pretend February is always 28 days).
- You never pay more than the minimum or your current balance.
- You never accrue new charges. Your goal is simply to pay off the card.
-
Because we have not (quite) learned enough about functions to pass
parameters, all computations may proceed within
main.
General Notes
Your testing should cover an appropriate range of "input" value combinations and your program's output should make it easy to assess correctness.
Grading
In addition to the general grading guidelines for evaluation, the assignment is worth 25 points.
- [15 points] Main program
- [1 point] Calculates DPR from APR correctly
- [2 points] Correctly determines number of days in each month
- [2 points] Correctly calculates interest charges
- [1 points] Correctly updates balance
- [2 points] Correctly updates month
- [2 points] Prints the current month, interest charges, payment, and forward balance.
- [2 points] Looping controls repetition with appropriate termination conditions
- [1 point] Monthly display aligns columns at decimal points
- [2 points] Summary displays include the total number of months, amount paid, and initial balance
-
[10 points] Testing
- [2 points] Test plan has a numbered listing of the circumstances that can reasonably arise in this problem
- [2 points] Test plan lists test cases to be considered, with the expected outcome
- [4 points] Transcript records actual test runs
- [2 points] Summary statement explains why the program is correct
-
Comments on Program Format, Comments, Readability, etc.
(Points not given, but points can be deducted.)
A five point penalty will apply to any submission that includes personally identifying information anywhere other than the references/honesty file.
