Program romain_decimal;
Var ch : string;
(******************************************)
Procedure saisie(var ch : string);
Function valide(ch : string):boolean;
Var i : integer;
ok : boolean;
Begin
i:=0;
Repeat
i:=i+1;
ok:= ch[i] in ['M','D','C','L','X','V','I'] Until (not ok) or (i=length(ch));
valide := ok;
End;
Begin 
Repeat
Write('Entrer un nombre en chiffres romains : ');
Readln(ch);
Until valide(ch);
End;
(********************************************)
Function convert(ch : string):integer;
Var i, s, v, v2 : integer;
Function decimal(c : char):integer;
Begin
Case c Of
'I' : decimal := 1; 
'V' : decimal := 5;
'X' : decimal := 10;
'L' : decimal := 50;
'C' : decimal := 100;
'D' : decimal := 500;
'M' : decimal := 1000;
End;
End;
Begin
s := 0;
For i:=1 To Length(ch) Do
Begin
v := decimal(ch[i]);
If (i < Length(ch)) Then
Begin 
v2 := decimal(ch[i+1]);
If (v < v2) Then v:= -v;
End;
s := s + v;
End;
convert := s;
End;
(**********************P.P******************)
Begin
Saisie(ch);
Writeln(ch , ' = ', convert(ch));
End.