| 1 | PROGRAM BAUSPARKREDIT(INPUT,OUTPUT); |
| 2 | |
| 3 | VAR ANFANG,GETILGT: BOOLEAN; |
| 4 | DATUM,MONAT,QUARTAL,JAHR: INTEGER; |
| 5 | DARLEHEN,SCHULD,ZINSEN,ZAHLUNG,TILGUNG,RATE: REAL; |
| 6 | RSUMME,ZSUMME,TSUMME: REAL; |
| 7 | |
| 8 | PROCEDURE TRENNUNGSSTRICH; |
| 9 | VAR I: INTEGER; |
| 10 | BEGIN FOR I:=1 TO 60 DO WRITE("-"); WRITELN END; |
| 11 | |
| 12 | |
| 13 | PROCEDURE KOPFZEILE; |
| 14 | BEGIN |
| 15 | WRITELN("BILANZ", JAHR:5, " ":3, "RESTSCHULD", |
| 16 | " ":3, "ZAHLUNGEN", " ":6, "ZINSEN", " ":5, "TILGUNG"); |
| 17 | TRENNUNGSSTRICH; |
| 18 | RSUMME := 0; ZSUMME := 0; TSUMME := 0 |
| 19 | END (* KOPFZEILE *); |
| 20 | |
| 21 | |
| 22 | PROCEDURE QUARTALSBERICHT; |
| 23 | BEGIN |
| 24 | WRITELN(QUARTAL:2, ". QUARTAL ", SCHULD:12:2, |
| 25 | ZAHLUNG:12:2, ZINSEN:12:2, TILGUNG:12:2); |
| 26 | ANFANG := FALSE; |
| 27 | RSUMME := RSUMME + ZAHLUNG; |
| 28 | ZSUMME := ZSUMME + ZINSEN; |
| 29 | TSUMME := TSUMME + TILGUNG |
| 30 | END (* QUARTALSBERICHT *); |
| 31 | |
| 32 | |
| 33 | PROCEDURE JAHRESABRECHNUNG; |
| 34 | BEGIN |
| 35 | TRENNUNGSSTRICH; |
| 36 | WRITELN("ABRECHNUNG: ", SCHULD-ZAHLUNG:12:2, |
| 37 | RSUMME:12:2, ZSUMME:12:2, TSUMME:12:2); |
| 38 | WRITELN; WRITELN; WRITELN |
| 39 | END (* JAHRESABRECHNUNG *); |
| 40 | |
| 41 | |
| 42 | |
| 43 | BEGIN WRITELN; WRITELN("B A U S P A R K R E D I T"); WRITELN; |
| 44 | WRITE("HOEHE DES DARLEHENS LAUT VERTRAG S"); READ(DARLEHEN); |
| 45 | WRITE("BIS TILGUNGSBEGINN ANGEWACHSEN AUF S"); READ(SCHULD); |
| 46 | WRITE("DATUM DER 1. TILGUNGSRATE (JJMMTT)"); READ(DATUM); |
| 47 | WRITELN; |
| 48 | |
| 49 | JAHR := DATUM DIV 10000 + 1900; |
| 50 | MONAT := (DATUM MOD 10000) DIV 100; |
| 51 | QUARTAL := (MONAT + 2) DIV 3; |
| 52 | RATE := 7*TRUNC(DARLEHEN/1000 + 0.999); |
| 53 | WRITELN("MONATLICHE TILGUNGSRATE S", RATE:9:2); |
| 54 | WRITELN; |
| 55 | |
| 56 | ANFANG := TRUE; GETILGT := FALSE; |
| 57 | ZAHLUNG := (3*QUARTAL - MONAT + 1)*RATE; |
| 58 | ZINSEN := 0; |
| 59 | TILGUNG := ZAHLUNG; |
| 60 | |
| 61 | REPEAT (* JAHR *) |
| 62 | KOPFZEILE; |
| 63 | REPEAT (* QUARTAL *) |
| 64 | IF NOT ANFANG THEN |
| 65 | BEGIN QUARTAL := QUARTAL + 1; |
| 66 | ZINSEN := TRUNC(1.5*(SCHULD-ZAHLUNG))/100; |
| 67 | SCHULD := SCHULD - ZAHLUNG + ZINSEN; |
| 68 | ZAHLUNG := 3*RATE; |
| 69 | IF SCHULD<=ZAHLUNG THEN |
| 70 | BEGIN ZAHLUNG := SCHULD; |
| 71 | GETILGT := TRUE |
| 72 | END; |
| 73 | TILGUNG := ZAHLUNG - ZINSEN |
| 74 | END; |
| 75 | QUARTALSBERICHT |
| 76 | UNTIL (QUARTAL=4) OR GETILGT; |
| 77 | JAHRESABRECHNUNG; |
| 78 | JAHR := JAHR + 1; QUARTAL := 0; |
| 79 | IF JAHR<1979 THEN SCHULD := SCHULD + 30 |
| 80 | ELSE SCHULD := SCHULD + 40 |
| 81 | UNTIL GETILGT |
| 82 | END. |