Advertisement
eduardovp97

Pregunta1 PC3 2015-2

Oct 30th, 2015
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.64 KB | None | 0 0
  1. program project;
  2. Type ArrReal = array[1..150] of Real;
  3. const PRECISION = 0.001;
  4.  
  5. function calcularTir(mo:Real;nd:Integer;var flujos : ArrReal):Real;
  6. var i,j:Integer;
  7.   xo,fx,m,tir,aux:Real;
  8. begin
  9.   xo := random();
  10.   xo := xo*1000;
  11.   //xo := xo-1000;
  12.  
  13.   fx := -mo;
  14.   for i:=1 to nd do fx := fx + flujos[i]*exp(i*ln(xo));
  15.   while fx>PRECISION do begin
  16.     m:=0;
  17.     for i:=1 to nd do begin
  18.       aux := 1;
  19.       for j:=1 to (i-1) do aux := aux*xo;
  20.       m:= m + flujos[i]*i*aux;
  21.     end;
  22.     xo := xo - (fx/m);
  23.     fx := -mo;
  24.     for i:=1 to nd do begin
  25.       aux := 1;
  26.       for j:=1 to i do aux := aux*xo;
  27.       fx := fx + flujos[i]*aux;
  28.     end;
  29.   end;
  30.   calcularTir := (1/xo)-1;
  31. end;
  32.  
  33. procedure emitirReporte(var archIn,archOut:Text);
  34. var tasa,mo,tir:Real;
  35.   proy:String;
  36.   nd:Integer;
  37.   flujos:ArrReal;
  38.   estado:String;
  39. begin
  40.   readln(archIn,tasa);
  41.   writeln('Tasa de corte: ',tasa:2:2,'%');
  42.   writeln('PROYECTO       TIR       COMENTARIOS');
  43.   randomize;
  44.   while not eof(archIn) do begin
  45.     readln(archIn,proy);
  46.     readln(archIn,mo);
  47.     nd := 0;
  48.     while not eoln(archIn)do begin
  49.       inc(nd);
  50.       read(archIn,flujos[nd]);
  51.     end;
  52.       tir := calcularTir(mo,nd,flujos);
  53.       tir := tir*100;
  54.       if(tir>tasa) then begin
  55.         estado := 'APROBADO';
  56.       end
  57.       else estado := 'RECHAZADO';
  58.       writeln(proy:10,' ',tir:4:2,'%     ',estado);
  59.     readln(archIn);
  60.   end;
  61.  
  62. end;
  63.  
  64. var archIn,archOut:Text;
  65. begin
  66.   assign(archIn,'datos.txt');
  67.   reset(archIn);
  68.   assign(archOut,'reporte.txt');
  69.   rewrite(archOut);
  70.   emitirReporte(archIn,archOut);
  71.   close(archIn);
  72.   close(archOut);
  73.   readln;
  74. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement