Pascal/Turbo Pascal - ayuda con fechas

 
Vista:

ayuda con fechas

Publicado por Juan Manuel Lopez (10 intervenciones) el 04/09/2009 22:36:08
hola soy alumno de programacion estoy en primer año y espeor me den una mano con este problema que nos dieron y casi nadie logro hacer:

Un banco quiere calcular los intereses que tiene que cobrar al final del año a sus clientes con base a los datos de: Cédula y
Nombre del cliente, Valor del préstamo, Tasa de interés convenida en pordentaje (%), fecha en que fue hecho el préstamo. Se
aplica la siguiente fórmula: Valor intereses = valor préstamo * (interés/100) * (360 - días desde préstamo)/360. Se debe imprimir el valor del interés pagado por cada cliente y el total para todos ellos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda con fechas

Publicado por JUAN MANUE (10 intervenciones) el 05/09/2009 15:32:45
program TP2_02;
{Algo hace........}

uses
crt;
const
MAX=1;

type

fecha=record
dia:integer;
mes:integer;
anio:integer;
end;

persona=record
cedula:integer;
nomCliente:string;
valorPresta:real;
tasa:real;
fechaInic:fecha;
end;
datos=array[1..MAX] of persona;

var
dias: longint;
cliente:datos;

valorPresta:real;
fecha1, fecha2: fecha;

procedure carga(var vec:datos;n:integer);
var
i:integer;
begin
for i := 1 to n do
with vec[i] do
begin
writeln('Ingrese datos de persona: ');
writeln('Numero de Cedula:');
readln(cedula);
writeln('Nombre del cliente:');
readln(nomCliente);
writeln('Valor de prestamo:');
readln(valorPresta);
writeln('Tasa anual:');
readln(tasa);
writeln('Fecha de prestamo: dia:');
readln(vec[i].fechaInic.dia);
writeln('Mes:');
readln(vec[i].fechaInic.mes);
writeln('A¤o:');
readln(vec[i].fechaInic.anio);
end
end;

function CalcJuliano(dia, mes, ano: integer): longint;
var
anospn, aux: real;
c : real;
begin
{ yy:= 1.0 * yyyy + (1.0 * mm - 2.85) / 12;}
anospn:= 1.0 * ano;
aux:= (1.0 * mes - 2.85) / 12;
anospn:= anospn + aux;
if ((longint(ano) * 10000) + (mes * 100) + dia) <= 15821004 then
c:= 0.75 * 2
else
c:= 0.75 * trunc(anospn / 100);
CalcJuliano:= trunc(
trunc(
trunc(367 * anospn) - 1.75 * trunc(anospn) + dia) - c) + 1721115;
end; (* cj *)

function RestarFecha(f1, f2: fecha): longint;
begin
RestarFecha := CalcJuliano(f1.dia, f1.mes, f1.anio) - CalcJuliano(f2.dia,f2.mes,f2.anio);
end; (* datesubt *)

begin

clrscr;
carga(cliente,MAX);
fecha2.dia:=cliente[1].fechaInic.dia;
fecha2.mes:=cliente[1].fechaInic.mes;
fecha2.anio:=cliente[1].fechaInic.anio;

fecha1.dia:=04;
fecha1.mes:=09;
fecha1.anio:=2009;

writeln ('Diferencia en d¡as desde el prestamo: ', RestarFecha(fecha1, fecha2));
valorPresta:=cliente[1].valorPresta*(cliente[1].tasa / 100.0) * (360 - RestarFecha(fecha1,fecha2) div 360);
writeln('me tiene que devolver: $',valorPresta:2:5);


readkey;
end.


eso tengo echo pero no se, con ayuda de una parte de algoritmo que encontre en la web, pero no me sale bien el resultado......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con fechas

Publicado por Diego Romero (996 intervenciones) el 06/09/2009 14:59:39
Bueno. Lo primero que veo es que la fórmula no la has puesto tal como dice el enunciado.

valorPresta:=cliente[1].valorPresta*(cliente[1].tasa / 100.0) * (360 - RestarFecha(fecha1,fecha2)) div 360;

Nota el cambio en el último paréntesis.

Esto devolvería el interés acumulado, según el enunciado (yo no estoy seguro que sea así, porque la fórmula me parece sospechosa). Por lo tanto falta sumar a este resultado el monto capitalizado. Es decir:

TotalDeuda:=valorPresta+cliente[1].valorPresta;

Por lo demás está todo bien. Entiendo que algunas cosas las has puesto así a modo de depuración (como la fecha fija por ejemplo).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar