araromax

program romani;
(* trasforma formato numerico da arabico a romano *)
(* struttura analitica..cfr.varianti fornite *)
uses crt;
var numero,risposta:integer;
    romano,M,CM,D,CD,C,XC,L,XL,X,IX,V,IV,I,scegli:string;

procedure calcroman;
begin
repeat
write('scrivi numero intero <3999 ');readln(numero);
until numero<3999;
romano:='';
if numero>=1000 then
repeat
begin
romano:=romano+M;
numero:=numero-1000;
end;
until numero<1000;
if numero>=1000 then
repeat
begin
romano:=romano+M;
numero:=numero-1000;
end;
until numero<1000;
if numero>=900 then
repeat
begin
romano:=romano+CM;
numero:=numero-900;
end;
until numero<900;
if numero>=500 then
repeat
begin
romano:=romano+D;
numero:=numero-500;
end;
until numero<500;
if numero>=400 then
repeat
begin
romano:=romano+CD;
numero:=numero-400;
end;
until numero<400;


if numero>=100 then
repeat
begin
romano:=romano+C;
numero:=numero-100;
end;
until numero<100;
if numero>=90 then
repeat
begin
romano:=romano+XC;
numero:=numero-90;
end;
until numero<90;
if numero>=50 then
repeat
begin
romano:=romano+L;
numero:=numero-50;
end;
until numero<50;
 if numero>=40 then
repeat
begin
romano:=romano+XL;
numero:=numero-40;
end;
until numero<40;
if numero>=10 then
repeat
begin
romano:=romano+X;
numero:=numero-10;
end;
until numero<10;
if numero=9 then
repeat
begin
romano:=romano+IX;
numero:=numero-9;
end;
until numero<9;
if numero>=5 then
repeat
begin
romano:=romano+V;
numero:=numero-5;
end;
until numero<5;

if numero=4 then
repeat
begin
romano:=romano+IV;
numero:=numero-4;
end;
until numero<4;

if numero>=1 then
repeat
begin
romano:=romano+I;
numero:=numero-1;
end;
until numero<1;

writeln('il numero romano=',romano);
write('premi invio');
readln;end;
procedure fine;
begin
write('premi Invio');readln;clrscr;
end;

 procedure scelta;
begin
clrscr;
write('per continuare scrivi 1 o 0 per finire ');readln(risposta);
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
calcroman;
scelta;
until risposta=0;
end.

listato risultato traduzione


per continuare scrivi 1 o 0 per finire 1
scrivi numero intero <3999 1555
il numero romano=MDLV
premi invio

per continuare scrivi 1 o 0 per finire 1
scrivi numero intero <3999 555
il numero romano=DLV
premi invio