program roma2ara; {legge dei numeri romani in un file di input (romani.pas) e scrive i corrispondenti numeri arabici in un file di output} var roma,arabia:text; romaname:string; nroma:string; nara:integer; function valore(x:char):integer; var y:integer; begin case x of 'M': y:=1000; 'D': y:=500; 'C': y:=100; 'L': y:=50; 'X': y:=10; 'V': y:=5; 'I': y:=1 end; valore:=y end; procedure convert(n:string; var m: integer); var i:integer; begin i:=1; m:=0; while i<=length(n)-1 do begin if valore(n[i]) < valore(n[i+1]) then begin m:=m+(valore(n[i+1])-valore(n[i])); i:=i+1 end else m:=m+valore(n[i]); i:=i+1 end; if i=length(n) then m:=m+valore(n[i]); end; begin write('Nome del file con i numeri romani:'); readln(romaname); assign(roma,romaname); reset(roma); assign(arabia,'arabia.txt'); rewrite(arabia); while not EOF(roma) do begin while not EOLN(roma) do begin readln(roma,nroma); convert(nroma,nara); writeln(arabia,nara) end; end; close(roma); close(arabia); writeln('I numeri arabici si trovano nel file arabia.txt.') end.