[Back to MATH SWAG index] [Back to Main SWAG index] [Original]

    (*
     KVR> Hello All,
     KVR> I am busy with a pascal course and I gotta formula I must work out.
     KVR> My maths ended in std 8 so I got noclu of what I'm doin but im doin it
     KVR> anyway!! HELP PLease anybody!!
     KVR>
     KVR> 12n
     KVR> Ar[1+(r/1200)]
     KVR> P= -----------------------
     KVR> 12n
     KVR> 1200{[1+(r/1200)]    -1}
     KVR>
     KVR> This is a formula for monthly mortgage payments.
     KVR> P=repayment value,A=amount borrowed, n=amount of years,
     KVR> r=annual mortgage interest rate.
     KVR> I've done this:
     KVR>
     KVR> B:=((1+(r/1200))*exp(12*n);
     KVR> P:=((A*r)*B)/(1200*(B-1));
     KVR> and I get some real cockeyed answers 8-)

    Here you go.  Keep in mind that all variables are of type REAL except the
    <n> variable which is type WORD.  Keep in mind that your result is going to
    be a real variable, so if you do a writeln(p); you are going to get a really
    weird looking answer.  To see it correctly you should use writeln(p:2:2);

    -----------------------------------/ Cut /------------------------------------
    *)

    Program ShowPayment;
    uses crt;

    var A,P,r:real;
        n:word;

    function sign(number:real):real;
    begin
    if number = 0.0 then sign:=1 else sign:=abs(number) / number;
    end;

    function raise(number,power:real):real;
    begin
    if number =0.0 then
       if power = 0.0 then raise:=1.0 else raise:=0.0
    else raise:=sign(number) * exp(power * ln(abs(number)));
    end;

    begin

     {P=repayment value,A=amount borrowed, n=amount of years,
     r=annual mortgage interest rate. }

    A:=2000.0;
    r:=10.0;
    n:=1;
    P:=(A*r*(raise((1.0+(r/1200)),12.0*n)))/(1200.0*(raise((1.0+(r/1200.0)),
            12.0*n)-1.0));
    writeln(p:2:2);
    end.

[Back to MATH SWAG index] [Back to Main SWAG index] [Original]