araroma4

 

program romani;
(* variante di araroma3 *)
(* traduce e visualizza simultaneamente serie consecutiva di *)
(* numeri forniti automaticamente da 1 a limite da indicare *)

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


procedure scrivinumero;
begin
numero:=k;
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,'=',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);
limite:=limite+1;
repeat
inizio;
k:=k+1;
until k=limite;
readln;
clrscr;
end.

listato per traduzione da arabico a romano


scrivi limite per trasformazione 10..100..400..1000..

scrivi limite per trasformazione 10..100..400..1000..10
scrivi da quale numero iniziare 0..10..20..1
1=I.. 2=II.. 3=III.. 4=IV.. 5=V.. 6=VI.. 7=VII.. 8=VIII.. 9=IX.. 10=X..

scrivi limite per trasformazione 10..100..400..1000..100
scrivi da quale numero iniziare 0..10..20..70
70=LXX.. 71=LXXI.. 72=LXXII.. 73=LXXIII.. 74=LXXIV.. 75=LXXV.. 76=LXXVI.. 77=LXX
VII.. 78=LXXVIII.. 79=LXXIX.. 80=LXXX.. 81=LXXXI.. 82=LXXXII.. 83=LXXXIII.. 84=L
XXXIV.. 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..