#include /* Supplemental Problem 2 Sample Code this program performs a computation and prints the results, based on data in arrays */ /* function computes results based on value and n */ /* pre-conditions: value is a double n is an int post-conditions: double is returned */ double compute_neg_power (double value, int n); /* function computes results based on 3 parameters */ /* pre-conditions: ann rate and amt are doubles years is an int post-conditions: double is returned */ double compute_payment (double annRate, int years, double amt); /* three parameters are used to compute a result */ /* pre-conditions: ann Rate is a double years is an int amt is a double post-conditions: double is returned */ double total_paid(double annRate, int years, double amt); /* the main procedure starts here */ int main () { int numCases = 4; /* declared int variable numCases is set to 4 */ /* double array is declared and initialized */ double annualRate[] = { 8.75, 5.35, 5.35, 4.35 }; int years [] = { 25 , 30 , 30 , 35 }; /* double array is declared and initialized */ double amount [] = {26000.0, 90000.00, 90000.00, 90000.00}; /* printf writes "Mortgate Payment Table" as a line of output */ printf ("Mortgage Payment Table\n"); /* printf statement writes another line of output */ printf ("annual rate years amount monthly payment total paid\n"); int i; /* i declared as an int */ /* for loop with i starting at 0 continuing until i < numCases incrementing i by 1 after each iteration */ for (i = 0; i < numCases; i++) { /* payment declared as a double and given the value of a function */ double payment = compute_payment (annualRate[i], years[i], amount[i]); /* total declared as a function and given result after function call */ double total = total_paid (annualRate[i], years[i], amount[i]); /* printf of 1 double, followed by an int, followed by 3 doubles */ printf ("%8.2lf %7d %12.2lf% 11.2lf %16.2lf\n", annualRate[i], years[i], amount[i], payment, total); } /* return the value 0 */ return 0; } /* function computes results based on value and n */ /* pre-conditions: value is a double n is an int post-conditions: double is returned */ double compute_neg_power (double value, int n) { /* comments on the right used here for variety */ double result = 1.0; /* double initialized to 1.0 */ int i; /* i declared as an int */ for (i = 1; i <= n; i++) /* for loop starts at 1, tests i <= n, and increments by 1 each iteration */ result *= value; /* result multiplied by value */ return 1.0 / result; /* return 1.0 divided by result */ } /* function computes results based on 3 parameters */ /* pre-conditions: ann rate and amt are doubles years is an int post-conditions: double is returned */ double compute_payment (double annRate, int years, double amt) { /* variable monthlyRate declared as a double and initialized */ double monthlyRate = annRate / 1200.0; /* computation involving addition, subtraction, multiplication, and division made. computation also involves a function call result is returned */ return amt * monthlyRate / (1.0 - compute_neg_power((1 + monthlyRate), (12*years))); } /* three parameters are used to compute a result */ /* pre-conditions: ann Rate is a double years is an int amt is a double post-conditions: double is returned */ double total_paid(double annRate, int years, double amt) { /* variable PaymentInCents initialized after function call and computations */ int paymentInCents = (int) (compute_payment (annRate, years, amt) * 100.0 + 0.5); /* value returned is 12 times years times paymentInCents divided by 100.0 */ return 12 * years * paymentInCents / 100.0; }