PROGRAM KapitalBildung;
USES CRT;
VAR p,p2,k,mtl,k_end,geb:extended;
    ch:char;
    x,y,t:word;
BEGIN
 clrscr;
 writeln('Berechnung von Kapital oder Zinsen bei monatlicher Zuzahlung und Verzinsung');
 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
 writeln;k:=0;
 write('Was ist gesucht -  die <A>blaufsumme oder der <Z>inssatz?');
 repeat ch:=upcase(readkey)until ch in['A','Z'];writeln;
 write('Wie hoch ist die monatliche Rate (in DM).............: ');readln(mtl);
 write('Wie hoch sind die anfallenden monatlichen Gebhren...: ');readln(geb);
 write('Wie groá ist die Laufzeit in Jahren..................: ');readln(t);t:=t*12;
 writeln;
 writeln('Eigenleistung........................................: ',mtl*t:7:2,' DM');
 IF ch='A'THEN BEGIN
   write('Welcher Zinssatz wird verwendet......................: ');readln(p);p:=p/1200;
  for x:=1to t do k:=(k+mtl-geb)*(1+p);
  writeln;
  writeln('Eigenleistung........................................: ',mtl*t:7:2,' DM');
  writeln('Ablaufsumme..........................................: ',k:7:2,' DM');
 END ELSE BEGIN
  write('Wie hoch ist die Ablaufsumme.........................: ');readln(k_end);
  p2:=0.00125;{1.5%}
  repeat
   if k_end-k<0 then begin
    p:=p-p2;
    p2:=p2/2;
   end;
   p:=p+p2;k:=0;
   for x:=1to t do begin
    k:=(k+mtl-geb)*(1+p);
   end;
  until abs(k_end-k)<0.009;
  writeln;
  writeln('Eigenleistung........................................: ',mtl*t:7:2,' DM');
  writeln('Es wird ein Zinssatz bentigt von....................: ',p*1200:5:3,'%');
  writeln('Ablaufsumme..........................................: ',k:7:2,' DM');
 END;
 ch:=readkey;
END.
