home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / TURBO5.ZIP / LOAN.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1986-12-26  |  3.4 KB  |  126 lines

  1. {==========================================================================}
  2. {Program Language: PASCAL                                                  }
  3. {Program Title:    LOAN                                                    }
  4. {Author:           Rick Housh                                              }
  5. {Program Summary:  Calculates the regular payment on a loan.               }
  6. {==========================================================================}
  7.  
  8.  
  9.  
  10. PROGRAM Loan;
  11.  
  12.  
  13.  
  14. VAR     Principal, AnnualInterest, RegularPayment, TotalInterest,
  15.          TotalRepayment                                           :REAL;
  16.         PaymentsPerYear, TermInYears                              :INTEGER;
  17.         YesNo                                                     :CHAR;
  18.  
  19.  
  20.  
  21.  
  22. FUNCTION Power(x : REAL; y : INTEGER) : REAL;
  23. {Function which raises x to the y power (x^y).  y may be positive or negative.}
  24.  
  25. VAR i : INTEGER;
  26.     Temp : REAL;
  27.  
  28. BEGIN
  29.         Temp := 1.0;
  30.         IF y>= 0 THEN
  31.                 FOR i := 1 to y DO
  32.                         Temp := Temp * x
  33.         ELSE IF x =  0 THEN Temp := 0        {Check for base of 0}
  34.                 ELSE
  35.                         FOR i := 1 to -y DO
  36.                                 Temp := Temp / x;
  37.         Power := Temp;
  38. END; {Power}
  39.  
  40.  
  41.  
  42. PROCEDURE GetData;
  43.  
  44. BEGIN
  45.         WRITELN;
  46.         WRITELN;
  47.         WRITE('Enter amount of loan: ');
  48.         READLN(Principal);
  49.         WRITELN;
  50.         WRITE('Enter the annual interest rate: ');
  51.         READLN(AnnualInterest);
  52.         WRITELN;
  53.         WRITE('Enter payments per year: ');
  54.         READLN(PaymentsPerYear);
  55.         WRITELN;
  56.         WRITE('Enter term in years: ');
  57.         READLN(TermInYears);
  58. END; {GetData}
  59.  
  60.  
  61.  
  62. PROCEDURE Beep;
  63.  
  64. BEGIN
  65.         DELAY(125);
  66.         WRITE(#7);
  67. END;
  68.  
  69.  
  70.  
  71. PROCEDURE Calculate;
  72.  
  73. VAR     InterestPerPeriod : REAL;
  74.         NumberOfPayments   : INTEGER;
  75.  
  76. BEGIN {Calculate}
  77.         InterestPerPeriod := (AnnualInterest / 100) / PaymentsPerYear;
  78.         NumberOfPayments := PaymentsPerYear * TermInYears;
  79.  
  80.         RegularPayment := Principal * InterestPerPeriod /
  81.                         (1 - Power(InterestPerPeriod + 1, - NumberOfPayments));
  82.  
  83.         TotalInterest := RegularPayment * NumberOfPayments - Principal;
  84.         TotalRepayment := TotalInterest + Principal;
  85.  
  86. END; {Calculate}
  87.  
  88.  
  89.  
  90. PROCEDURE PrintAnswer;
  91.  
  92. BEGIN
  93.         WRITELN;
  94.         WRITELN;
  95.         WRITELN('REGULAR PAYMENT = $',RegularPayment:7:2);
  96.         WRITELN;
  97.         WRITELN('TOTAL INTEREST ON LOAN = $',TotalInterest:7:2);
  98.         WRITELN;
  99.         WRITELN('TOTAL AMOUNT PAID (PRINCIPAL PLUS INTEREST) = $',TotalRepayment
  100.                         :7:2);
  101. END;    {PrintAnswer}
  102.  
  103.  
  104.  
  105. BEGIN {Main Program}
  106.      YesNo := ' ';
  107.      REPEAT
  108.         ClrScr;
  109.         Beep;
  110.         WRITELN('                           *******LOAN PROGRAM*******');
  111.         GetData;
  112.         Beep;
  113.         Calculate;
  114.         Beep;
  115.         PrintAnswer;
  116.         Beep;
  117.         WRITELN;
  118.         WRITE('Would you like to calculate another? ');
  119.         READ(YesNo);
  120.      UNTIL (YesNo = 'N') OR (YesNo = 'n');
  121.         WRITELN;
  122.         WRITELN;
  123.         WRITELN('*************************END OF LOAN PROGRAM******************');
  124.         Beep;
  125. END.    {LOAN PROGRAM}
  126.