esercizi von turbo pascal v.5-7

su trasformazione di numeri da formato arabico a romano e viceversa

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

 

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.