home *** CD-ROM | disk | FTP | other *** search
/ The Best of the Best / _.img / 02001 / tilgung.inc < prev    next >
Text File  |  1988-12-28  |  7KB  |  214 lines

  1. (* Tilgung.inc *)
  2.  
  3. (* Prozeduren zur Tilgungsrechnung *)
  4.  
  5. (*------------------------------------------------------------------------*)
  6.  
  7. procedure Bildschirm_1;
  8. forward;
  9.  
  10. (*------------------------------------------------------------------------*)
  11.  
  12.               (* Tilgungsplan für Zinsanleihen *)
  13.  
  14. procedure Zinsanleihe;
  15. begin
  16.  clrscr;
  17.  write(' Nennwert der Zinsanleihe : ',cr);
  18.  write(' Verzinsung per anno in % : ',cr);
  19.  write(' Laufzeit in Jahren       : ',cr);
  20.  {$I-}
  21.  gotoxy(32,1);read(k);
  22.  gotoxy(32,2);read(p);
  23.  gotoxy(32,3);read(t);
  24.  {$I+}
  25.  if ioresult <> 0 then
  26.    begin
  27.      Fehlermeldung;
  28.      Bildschirm_1;
  29.    end
  30.   else
  31.      write  (cr,cr,cr,cr,
  32.              '           Abruf des Tilgungsplans mit beliebiger Taste !');
  33.   repeat until keypressed;
  34.   clrscr;
  35.   writeln(' ',k:10:2,' DM Zinsanleihe, ',p:2:2,' % Zinsen, ',t,' Jahre Laufzeit');
  36.   writeln(' ------------------------------------------------------------------------');
  37.   writeln('  Jahr      Nennwert         Zinsen          Tilgung       zu zahlender  ');
  38.   writeln('            Restschuld       jährlich                      Gesamtbetrag  ');
  39.   writeln(' ------------------------------------------------------------------------');
  40.   z:=(k/100)*p;
  41.   s1:=k+z;
  42.   z1:=z*t;
  43.   s2:=z1+k;
  44.   n:=t-1;
  45.   for i:=1 to n do
  46.    begin
  47.      if  i>  9 then
  48.        writeln('   ',i,' ',k:14:2,z:15:2,z:32:2,'   ')
  49.       else
  50.        writeln('   ',i,'  ',k:14:2,z:15:2,z:32:2,'     ');
  51.     end;
  52.      if t>  9 then
  53.        writeln('   ',t,' ',k:14:2,z:15:2,k:16:2,s1:16:2,'   ')
  54.       else
  55.        writeln('   ',t,'  ',k:14:2,z:15:2,k:16:2,s1:16:2,'     ');
  56.        writeln(' ------------------------------------------------------------------------');
  57.        writeln('                    ',z1:15:2,k:16:2,s2:16:2,'     ');
  58.        write  (' ========================================================================');
  59.        write(cr,cr);
  60.        textbackground(red);
  61.        write('                Neue Berechnung durchführen ( J / N ) ?                   ');
  62.        read(kbd,Auswahl);
  63.        textbackground(black);
  64.     if Auswahl in [ 'J', 'j'] then Zinsanleihe else Bildschirm_1;
  65.   end;
  66.  
  67.  
  68. (*------------------------------------------------------------------------*)
  69.  
  70.                  (* Tilgungsplan für Ratenanleihen *)
  71.  
  72. procedure Ratenanleihe;
  73. begin
  74. clrscr;
  75. write(' Nennwert der Ratenanleihe : ',cr);
  76. write(' Verzinsung per anno in %  : ',cr);
  77. write(' Laufzeit in Jahren        : ',cr);
  78. {$I-}
  79. gotoxy(32,1);read(k);
  80. gotoxy(32,2);read(p);
  81. gotoxy(32,3);read(t);
  82. {$I+}
  83. if ioresult <> 0 then
  84.   begin
  85.     Fehlermeldung;
  86.     Bildschirm_1;
  87.   end
  88.  else
  89.    write  (cr,cr,cr,cr,
  90.            '           Abruf des Tilgungsplans mit beliebiger Taste !');
  91.  repeat until keypressed;
  92.  clrscr;
  93.  writeln(' ',k:10:2,' DM Ratenanleihe, ',p:2:2,' % Zinsen, ',t,' Jahre Laufzeit');
  94.  writeln(' ------------------------------------------------------------------------');
  95.  writeln('  Jahr     Restschuld       Zinsen         Tilgung        zu zahlende  ');
  96.  writeln('                            jährlich                      Annuität     ');
  97.  writeln(' ------------------------------------------------------------------------');
  98.  Rate:=k/t;
  99.  z:=k/100*p;
  100.  k1:=k;
  101.  s1:=z;
  102.  an:=z+Rate;
  103.  writeln('   1  ',k :14:2,z :15:2,Rate:16:2,an:16:2);
  104.  for i:=2 to t do
  105.   begin
  106.     k1:=k1-Rate;
  107.     z1:=k1/100*p;
  108.     s1:=s1+z1;
  109.     an:=Rate+z1;
  110.     if i>=10 then
  111.      writeln('   ',i,'  ',k1:13:2,z1:15:2,Rate:16:2,an:16:2)
  112.     else
  113.      writeln('   ',i,'  ',k1:14:2,z1:15:2,Rate:16:2,an:16:2);
  114.    end;
  115.   s2:=k+s1;
  116.   writeln(' -----------------------------------------------------------------------');
  117.   writeln('                    ',s1:15:2,k:16:2,s2:16:2);
  118.   write  (' =======================================================================');
  119.   write(cr,cr);
  120.   textbackground(red);
  121.   write('                Neue Berechnung durchführen ( J / N ) ?                   ');
  122.   read(kbd,Auswahl);
  123.   textbackground(black);
  124.   if Auswahl in [ 'J', 'j'] then Ratenanleihe else Bildschirm_1;
  125. end;
  126.  
  127. (*------------------------------------------------------------------------*)
  128.  
  129.                  (* Tilgungsplan für Annuitätenanleihen *)
  130.  
  131. procedure Annuitaetenanleihe;
  132. begin
  133. clrscr;
  134. write(' Nennwert der Annuitätenanleihe : ',cr);
  135. write(' Verzinsung per anno in %       : ',cr);
  136. write(' Laufzeit in Jahren             : ',cr);
  137. {$I-}
  138. gotoxy(38,1);read(k);
  139. gotoxy(38,2);read(p);
  140. gotoxy(38,3);read(t);
  141. {$I+}
  142. if ioresult <> 0 then
  143.   begin
  144.     Fehlermeldung;
  145.     Bildschirm_1;
  146.   end
  147.  else
  148.   write  (cr,cr,cr,cr,
  149.           '           Abruf des Tilgungsplans mit beliebiger Taste !');
  150. repeat until keypressed;
  151. clrscr;
  152. writeln(' ',k:10:2,' DM Annuitätenanleihe, ',p:2:2,' % Zinsen, ',t,' Jahre Laufzeit');
  153. writeln(' ------------------------------------------------------------------------');
  154. writeln('  Jahr     Restschuld       Zinsen         Tilgung        zu zahlende  ');
  155. writeln('                            jährlich                      Annuität     ');
  156. writeln(' ------------------------------------------------------------------------');
  157. q :=1+(p/100);
  158. qn:=exp(ln(q)*t);
  159. an:=(qn-1)/(qn*(q-1));
  160. Annuitaet:=k/an;
  161. z:=k/100*p;
  162. Rate:=Annuitaet-z;
  163. k1:=k;
  164. s1:=Annuitaet*t;
  165. Rate1:=Rate;
  166. writeln('   1   ',k:13:2,z:15:2,Rate:16:2,Annuitaet:16:2);
  167. for i:=2 to t do
  168.   begin
  169.     k1:=k1-Rate1;
  170.     Rate1:=Rate1*q ;
  171.     z1:=Annuitaet-Rate1;
  172.     if i>=10 then
  173.       writeln('   ',i,'  ',k1:13:2,z1:15:2,Rate1:16:2,Annuitaet:16:2)
  174.      else
  175.       writeln('   ',i,'  ',k1:14:2,z1:15:2,Rate1:16:2,Annuitaet:16:2);
  176.     end;
  177.  s2:=s1-k;
  178.  writeln(' -----------------------------------------------------------------------');
  179.  writeln('                    ',s2:15:2,k:16:2,s1:16:2);
  180.  write  (' =======================================================================');
  181.  write(cr,cr);
  182.  textbackground(red);
  183.  write('                Neue Berechnung durchführen ( J / N ) ?                   ');
  184.  read(kbd,Auswahl);
  185.  textbackground(black);
  186.  if Auswahl in [ 'J', 'j'] then Annuitaetenanleihe else Bildschirm_1;
  187. end;
  188.  
  189. (*------------------------------------------------------------------------*)
  190.  
  191.                    (* Maske zur Tilgungsrechnung *)
  192.  
  193. procedure Bildschirm_1;
  194. begin
  195.   window(2,5,75,23);
  196.   clrscr;
  197.   write(cr,cr,'                            TILGUNGSRECHNUNG');
  198.   write(cr,cr,'               Tilgungsplan für Zinsanleihen          =  1');
  199.   write(cr,cr,'               Tilgungsplan für Ratenanleihen         =  2');
  200.   write(cr,cr,'               Tilgungsplan für Annuitätenanleihen    =  3');
  201.   write(cr,cr,'               Zurück zur Hauptauswahl                =  H');
  202.   write(cr,cr,cr,cr,'               Wählen und mit <Return> bestätigen     :  ');
  203.   repeat
  204.     read(TasteB);
  205.     Tastencode:=Ord(TasteB);
  206.     case tastencode of
  207.       49 : Zinsanleihe;
  208.       50 : Ratenanleihe;
  209.       51 : Annuitaetenanleihe;
  210.       72,104 : Bildschirm;
  211.     end (*von case*)
  212.   until Tastencode in [ 72, 104 ];
  213. end;
  214.