araroma5

 

program romani;
(* variante di araroma4 *)
(* traduce e visualizza simultaneamente serie consecutiva di *)
(* numeri forniti automaticamente da primo e ultimo da indicare *)

uses crt;
var numero,risposta,k,limite,nx:integer;
    romano,M,CM,D,CD,C,XC,L,XL,X,IX,V,IV,I,sigla:string;


procedure scrivinumero;
begin
numero:=k+nx;
romano:='';
end;

procedure calcola(nume:integer;sigla:string);
var numex:integer;
begin
numex:=nume;
if numero>=numex then
repeat
begin
romano:=romano+sigla;
numero:=numero-nume;
end;
until numero<nume;
end;

procedure stampa;
begin
write(k+nx,'=',romano,'.. ');
end;

procedure inizio;
begin
scrivinumero;
calcola(1000,M);
calcola(900,CM);
calcola(500,D);
calcola(400,CD);
calcola(100,C);
calcola(90,XC);
calcola(50,L);
calcola(40,XL);
calcola(10,X);
calcola(9,IX);
calcola(5,V);
calcola(4,IV);
calcola(1,I);
stampa;
end;


begin
M:='M';
CM:='CM';
D:='D';
CD:='CD';
C:='C';
XC:='XC';
L:='L';
XL:='XL';
X:='X';
IX:='IX';
V:='V';
IV:='IV';
I:='I';

clrscr;
write('scrivi limite per trasformazione 10..100..400..1000..');readln(limite);
write('scrivi da quale numero iniziare 0..10..20..');readln(nx);
limite:=limite+1;
repeat
inizio;
k:=k+1;
until k=limite-nx;
readln;
clrscr;
end.

listato per traduzione da arabico a romano


scrivi limite per trasformazione 10..100..400..1000..100
scrivi da quale numero iniziare 0..10..20..50
50=L.. 51=LI.. 52=LII.. 53=LIII.. 54=LIV.. 55=LV.. 56=LVI.. 57=LVII.. 58=LVIII..
 59=LIX.. 60=LX.. 61=LXI.. 62=LXII.. 63=LXIII.. 64=LXIV.. 65=LXV.. 66=LXVI.. 67=
LXVII.. 68=LXVIII.. 69=LXIX.. 70=LXX.. 71=LXXI.. 72=LXXII.. 73=LXXIII.. 74=LXXIV
.. 75=LXXV.. 76=LXXVI.. 77=LXXVII.. 78=LXXVIII.. 79=LXXIX.. 80=LXXX.. 81=LXXXI..
 82=LXXXII.. 83=LXXXIII.. 84=LXXXIV.. 85=LXXXV.. 86=LXXXVI.. 87=LXXXVII.. 88=LXX
XVIII.. 89=LXXXIX.. 90=XC.. 91=XCI.. 92=XCII.. 93=XCIII.. 94=XCIV.. 95=XCV.. 96=
XCVI.. 97=XCVII.. 98=XCVIII.. 99=XCIX.. 100=C..