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.