esercizi von turbo pascal v.5-7

su trasformazione di numeri da formato arabico a romano e viceversa

program romani;
(* trasforma formato arabico in formato romano *)
(* trasforma un singolo numero arabico inserito *)
(* variante di originale araromax pi— analitico *)


program romani;
(* trasforma formato arabico in formato romano *)
(* trasforma un singolo numero arabico inserito  *)
(* variante di originale araromax pi— analitico *)

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

procedure scrivinumero; (* inserimento numero da tradurre *)
begin
clrscr;
write('scrivi numero intero <3999 ');readln(numero);
romano:='';
end;

procedure calcola(nume:integer;sigla:string);  (* traduzione *)
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;    (* visualizza traduzione operata *)
begin
writeln('il numero romano=',romano);
writeln('premi invio per proseguire');
end;

procedure inizio;  (* programma  chiamata procedure *)
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; readln;
end;

procedure scelta;  (* opzione per continuare o finire *)
begin
clrscr;
write('per altra prova 1..per fine..0 =');readln(risposta);
end;

begin    (* programma principale *)
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
inizio;
scelta;
until risposta=0;
end.