araroma2
program romani; (* trasforma formato numero arabico in romano *) (* vengono forniti automaticamente in serie consecutiva *) (* i numeri da 1 a valore minore di 3999 uno alla volta *) (* possibile uscire da programma con 0 *) uses crt; var numero,risposta,k:integer; romano,M,CM,D,CD,C,XC,L,XL,X,IX,V,IV,I,sigla:string; procedure scrivinumero; (* assegnazione automatica numero arabico *) begin clrscr; numero:=numero+k; romano:=''; end; procedure calcola(nume:integer;sigla:string); (* trasformazione *) 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; (* visualizzazione singoli numeri in sucessione *) begin writeln('il numero romano=',romano); writeln('premi invio per proseguire'); end; procedure inizio; (* procedure per trasformazione e stampa *) 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 proseguire 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; k:=k+1; (* viene fornita serie consecutiva numeri arabici *) scelta; until risposta=0; end.