%
%
% 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," ").
Download

% % % Nome do ficheiro: DECROM % Nome do