% % % Nome do ficheiro: DECROM % Nome do predicado inicial : convdr % % Objectivo: Converter numeracao decimal para romana at‚ 1000 convdr:-write('ConversÆo de Decimal para Romano'),nl, write('para terminar digite stop'),nl,nl, convertedr. convertedr:-repeat,write('Diga o n£mero :'),read(D), (D==stop;roma_regra(D,R), name(AR,R),tab(15),write(AR),nl,fail). roma_regra(X,Y):-valordr(X,Y),!. roma_regra(X,Y):-valordr(Z,X1),Z<X,Y1 is X mod Z, roma_regra(Y1,Z1),!,conc(X1,Z1,Y). conc([],L,L). % pouco eficiente se 1. lista grande conc([X|L1],L2,[X|L3]):-conc(L1,L2,L3). valordr(1000,"M"). valordr(900,"CM"). valordr(500,"D"). valordr(400,"CD"). valordr(300,"CCC"). valordr(200,"CC"). valordr(100,"C"). valordr(90,"XC"). valordr(50,"L"). valordr(40,"XL"). valordr(30,"XXX"). valordr(20,"XX"). valordr(10,"X"). valordr(9,"IX"). valordr(5,"V"). valordr(4,"IV "). valordr(3,"III"). valordr(2,"II"). valordr(1,"I"). valordr(0," ").