araroma6

program romani;
(* trasforma formato arabico in romano per serie consecutiva automatica*)
(* visualizza tabella tradotta *)
(* permette traduzione singolo valore da inserire *)

uses crt;
var numero,k,limite,arabico:integer;
    M,CM,D,CD,C,XC,L,XL,X,IX,V,IV,I,sigla:string;
    romano1:array[1..3999] of string[10];

procedure scrivinumero;
begin
numero:=k;romano1[k]:='';end;

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

procedure stampa;
begin
write(k,'=',romano1[k],'.. ');
end;

procedure inizio;    (* genera tabella valori tradotti *)
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;
repeat
writeln('scrivi limite per trasformazione 10..100..400..<3999:');readln(limite);
until limite<3999;
limite:=limite+1;
repeat
inizio;
k:=k+1;
until k=limite;
writeln;
(* confronta numero inserito con tabella tradotta *)
write(' scrivi numero arabico<=limite:');readln(arabico);
for k:=1 to limite do
begin
if arabico=k then writeln(romano1[k]);
end;
readln;
clrscr;
end.

listato per traduzione da arabico a romano


scrivi limite per trasformazione 10..100..400..<3999:
4000
scrivi limite per trasformazione 10..100..400..<3999:
100
0=.. 1=I.. 2=II.. 3=III.. 4=IV.. 5=V.. 6=VI.. 7=VII.. 8=VIII.. 9=IX.. 10=X.. 11=
XI.. 12=XII.. 13=XIII.. 14=XIV.. 15=XV.. 16=XVI.. 17=XVII.. 18=XVIII.. 19=XIX..
20=XX.. 21=XXI.. 22=XXII.. 23=XXIII.. 24=XXIV.. 25=XXV.. 26=XXVI.. 27=XXVII.. 28
=XXVIII.. 29=XXIX.. 30=XXX.. 31=XXXI.. 32=XXXII.. 33=XXXIII.. 34=XXXIV.. 35=XXXV
.. 36=XXXVI.. 37=XXXVII.. 38=XXXVIII.. 39=XXXIX.. 40=XL.. 41=XLI.. 42=XLII.. 43=
XLIII.. 44=XLIV.. 45=XLV.. 46=XLVI.. 47=XLVII.. 48=XLVIII.. 49=XLIX.. 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=LXXXVIII.. 89
=LXXXIX.. 90=XC.. 91=XCI.. 92=XCII.. 93=XCIII.. 94=XCIV.. 95=XCV.. 96=XCVI.. 97=
XCVII.. 98=XCVIII.. 99=XCIX.. 100=C..
 scrivi numero arabico<=limite:5
V