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.
UHJvZ3JhbSByb21haW5fZGVjaW1hbDsKVmFyIGNoIDogc3RyaW5nOwooKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKQpQcm9jZWR1cmUgc2Fpc2llKHZhciBjaCA6IHN0cmluZyk7CkZ1bmN0aW9uIHZhbGlkZShjaCA6IHN0cmluZyk6Ym9vbGVhbjsKVmFyIGkgOiBpbnRlZ2VyOwpvayA6IGJvb2xlYW47CkJlZ2luCmk6PTA7ClJlcGVhdAppOj1pKzE7Cm9rOj0gY2hbaV0gaW4gWydNJywnRCcsJ0MnLCdMJywnWCcsJ1YnLCdJJ10gVW50aWwgKG5vdCBvaykgb3IgKGk9bGVuZ3RoKGNoKSk7CnZhbGlkZSA6PSBvazsKRW5kOwpCZWdpbiAKUmVwZWF0CldyaXRlKCdFbnRyZXIgdW4gbm9tYnJlIGVuIGNoaWZmcmVzIHJvbWFpbnMgOiAnKTsKUmVhZGxuKGNoKTsKVW50aWwgdmFsaWRlKGNoKTsKRW5kOwooKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopCkZ1bmN0aW9uIGNvbnZlcnQoY2ggOiBzdHJpbmcpOmludGVnZXI7ClZhciBpLCBzLCB2LCB2MiA6IGludGVnZXI7CkZ1bmN0aW9uIGRlY2ltYWwoYyA6IGNoYXIpOmludGVnZXI7CkJlZ2luCkNhc2UgYyBPZgonSScgOiBkZWNpbWFsIDo9IDE7IAonVicgOiBkZWNpbWFsIDo9IDU7CidYJyA6IGRlY2ltYWwgOj0gMTA7CidMJyA6IGRlY2ltYWwgOj0gNTA7CidDJyA6IGRlY2ltYWwgOj0gMTAwOwonRCcgOiBkZWNpbWFsIDo9IDUwMDsKJ00nIDogZGVjaW1hbCA6PSAxMDAwOwpFbmQ7CkVuZDsKQmVnaW4KcyA6PSAwOwpGb3IgaTo9MSBUbyBMZW5ndGgoY2gpIERvCkJlZ2luCnYgOj0gZGVjaW1hbChjaFtpXSk7CklmIChpIDwgTGVuZ3RoKGNoKSkgVGhlbgpCZWdpbiAKdjIgOj0gZGVjaW1hbChjaFtpKzFdKTsKSWYgKHYgPCB2MikgVGhlbiB2Oj0gLXY7CkVuZDsKcyA6PSBzICsgdjsKRW5kOwpjb252ZXJ0IDo9IHM7CkVuZDsKKCoqKioqKioqKioqKioqKioqKioqKipQLlAqKioqKioqKioqKioqKioqKiopCkJlZ2luClNhaXNpZShjaCk7CldyaXRlbG4oY2ggLCAnID0gJywgY29udmVydChjaCkpOwpFbmQu