>
Avant:=proc(date1,date2)
if(date1[3]<date2[3]) then
RETURN(true);
elif(date1[3]=date2[3]) and date1[2]<date2[2] then
RETURN(true);
elif(date1[3]=date2[3]) and date1[2]=date2[2] and date1[1] < date2[1] then
RETURN(true);
fi;
RETURN(false);
end;
prix:=proc(Tarifs,date)
local i;
for i from 1 to nops(Tarifs) do
if Avant(Tarifs[i],date) then
RETURN(Tarifs[i][4]);
fi;
od;
end;
NouveauT:=proc(Tarifs::name)
local tarif;
#saisie
tarif:=readstat("entrez le jour de prise d'effet ");
tarif:=tarif,readstat("entrez le mois de prise d'effet ");
tarif:=tarif,readstat("entrez l'année de prise d'effet ");
tarif:=tarif,readstat("entrez le nouveau tarif ");
tarif:=[tarif];
#verification
if Avant(tarif, Tarifs[1]) then
print("erreur, la date doit être postérieure!");
else
Tarifs:=[tarif,op(eval(Tarifs))];
fi;
end;
> exemple:=[[1,6,2002,200],[11,5,1998,160],[15,1,1997,120],[1,1,1995,100]];
> NouveauT('exemple');
entrez le jour de prise d'effet 1
entrez le jour de prise d'effet ;
entrez le mois de prise d'effet 5;
entrez l'année de prise d'effet 2003;
entrez le nouveau tarif 220;
>
montant:=proc(Tarifs, intervention)
local dateInter;
dateInter:=[intervention[1],intervention[2],intervention[3]];
print(dateInter);
RETURN(prix(Tarifs, dateInter)*intervention[4]);
end;
> montant(exemple, [12,7,1999,6,"Dupont"]);
>