home *** CD-ROM | disk | FTP | other *** search
- {==========================================================================}
- {Program Language: PASCAL }
- {Program Title: LOAN }
- {Author: Rick Housh }
- {Program Summary: Calculates the regular payment on a loan. }
- {==========================================================================}
-
-
-
- PROGRAM Loan;
-
-
-
- VAR Principal, AnnualInterest, RegularPayment, TotalInterest,
- TotalRepayment :REAL;
- PaymentsPerYear, TermInYears :INTEGER;
- YesNo :CHAR;
-
-
-
-
- FUNCTION Power(x : REAL; y : INTEGER) : REAL;
- {Function which raises x to the y power (x^y). y may be positive or negative.}
-
- VAR i : INTEGER;
- Temp : REAL;
-
- BEGIN
- Temp := 1.0;
- IF y>= 0 THEN
- FOR i := 1 to y DO
- Temp := Temp * x
- ELSE IF x = 0 THEN Temp := 0 {Check for base of 0}
- ELSE
- FOR i := 1 to -y DO
- Temp := Temp / x;
- Power := Temp;
- END; {Power}
-
-
-
- PROCEDURE GetData;
-
- BEGIN
- WRITELN;
- WRITELN;
- WRITE('Enter amount of loan: ');
- READLN(Principal);
- WRITELN;
- WRITE('Enter the annual interest rate: ');
- READLN(AnnualInterest);
- WRITELN;
- WRITE('Enter payments per year: ');
- READLN(PaymentsPerYear);
- WRITELN;
- WRITE('Enter term in years: ');
- READLN(TermInYears);
- END; {GetData}
-
-
-
- PROCEDURE Beep;
-
- BEGIN
- DELAY(125);
- WRITE(#7);
- END;
-
-
-
- PROCEDURE Calculate;
-
- VAR InterestPerPeriod : REAL;
- NumberOfPayments : INTEGER;
-
- BEGIN {Calculate}
- InterestPerPeriod := (AnnualInterest / 100) / PaymentsPerYear;
- NumberOfPayments := PaymentsPerYear * TermInYears;
-
- RegularPayment := Principal * InterestPerPeriod /
- (1 - Power(InterestPerPeriod + 1, - NumberOfPayments));
-
- TotalInterest := RegularPayment * NumberOfPayments - Principal;
- TotalRepayment := TotalInterest + Principal;
-
- END; {Calculate}
-
-
-
- PROCEDURE PrintAnswer;
-
- BEGIN
- WRITELN;
- WRITELN;
- WRITELN('REGULAR PAYMENT = $',RegularPayment:7:2);
- WRITELN;
- WRITELN('TOTAL INTEREST ON LOAN = $',TotalInterest:7:2);
- WRITELN;
- WRITELN('TOTAL AMOUNT PAID (PRINCIPAL PLUS INTEREST) = $',TotalRepayment
- :7:2);
- END; {PrintAnswer}
-
-
-
- BEGIN {Main Program}
- YesNo := ' ';
- REPEAT
- ClrScr;
- Beep;
- WRITELN(' *******LOAN PROGRAM*******');
- GetData;
- Beep;
- Calculate;
- Beep;
- PrintAnswer;
- Beep;
- WRITELN;
- WRITE('Would you like to calculate another? ');
- READ(YesNo);
- UNTIL (YesNo = 'N') OR (YesNo = 'n');
- WRITELN;
- WRITELN;
- WRITELN('*************************END OF LOAN PROGRAM******************');
- Beep;
- END. {LOAN PROGRAM}