esercizi von turbo pascal v.5-7
su trasformazione di numeri da formato arabico a romano e viceversa
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.